做usbcopy程序的时候,发现linux下除了删除命令 rm -fr 目录名 删除某个非空文件夹,没有直接可以删除非空目录的函数。
只好自己写个函数实现递归删除。(经有限次测试)
int deletedir(char *fp)
{
int n = 0;
DIR *s=NULL;
char sname[256];
struct dirent *p=NULL;
if((s=opendir(fp))!=NULL)
{
while((p=readdir(s))!=NULL)
{
if(strcmp(p->d_name,"..") != 0 && strcmp(p->d_name,".") != 0)
{
strcpy(sname,"\0");
strcat(sname,fp);
strcat(sname,"/");
strcat(sname,p->d_name);
if(p->d_type==4) /*递归删除目录*/
deletedir(sname);
rmdir(sname);
if(p->d_type==8)
remove(sname);
}
}
rmdir(fp);
}
closedir(s);
return 0;
}