linux 命令 递归删除,递归删除,模拟Llinux命令rm的递归删除

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define NAMESIZ 1024

int delefile(char *strname);

int main(int args,char **argv)

{

if(args < 2)

{

printf("使用方法:./a.out filename\n");

return -1;

}

char strname[NAMESIZ];

strcpy(strname,argv[1]);

delefile(strname);

return 0;

}

int delefile(char *strname)

{

char sname[NAMESIZ];

strcpy(sname,strname);

struct stat st;

lstat(sname,&st);

//如果不是目录直接删除

if(!S_ISDIR(st.st_mode))

{

unlink(sname);

}

//如果是目录

else

{

DIR *dp = NULL;

struct dirent *dd = NULL;

//打开目录

dp = opendir(sname);

rewinddir(dp);

while(1)

{

//读取目录

dd = readdir(dp);

//如果目录指针为空,跳出循环

if(dd == NULL)

{

break;

}

if((strncmp(dd->d_name,".",1) == 0 && strlen(dd->d_name) == 1) || strncmp(dd->d_name,"..",2) == 0)

{

continue;

}

else

{

//获得新路径

char ssname[NAMESIZ];

bzero(ssname,NAMESIZ);

strcpy(ssname,sname);

strcat(ssname,"/");

strcat(ssname,dd->d_name);

//递归调用

delefile(ssname);

}

}

closedir(dp);

rmdir(sname);

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值