#include<sys/stat.h> #include<stdio.h> #include<stdlib.h> #include<string.h> void main(int argc, char *argv[]) { struct stat sts; char strcmd[255],str1[255]; char *systemPath,*curpath; char recyclebin[255]; curpath = getenv("pwd"); //获得当前路径 systemPath = getenv("HOME");//获得host目录 sprintf(recyclebin,"%s/RECYCLE_BIN",systemPath);//在host目录下建立回收站 if(!strcmp(curpath,recyclebin)) { // 若当前目录位于回收站,则可删除回收站中的文件 for(int i=1;i<argc;i++) { sprintf("strcmd,"rm -rf %s",srgv[i]); system(strcmd); } return; } sprintf(strcmd, "mkdir -p %s",recyclebin);//建立回收站目录 system(strcmd); for(int i=1;i<argc;i++) { sprintf(strcmd, "%s/%s" ,recyclebin, argv[i]); int k=0; while((stat(strcmd,&sts))!=-1) { //若被删除的文件与回收站中的相同,则改名 sprintf(str1,"mv -f %s %s%d",strcmd,strcmd,k++); system(str1); strcpy(strcmd,str1); } sprintf(strcmd,"mv %s %s",argv[i],recyclebin);//把被删除的文件移至回收站 system(strcmd); } }