Linux下删除非空文件夹代码

linux没有直接删除非空文件夹的函数,下面几个函数删除文件夹,如果文件夹非空则不能删除成功。

int unlink(const char *pathname);
int rmdir(const char *pathname); 

int remove(const char *pathname); 

最近编写了一个函数,测试效果还可以。

void dfs_remove_dir()

{
DIR *cur_dir = opendir(".");
struct dirent *ent = NULL;
struct stat st;
 
if (!cur_dir)
{
perror("opendir:");
return;
}
 
while ((ent = readdir(cur_dir)) != NULL)
{
stat(ent->d_name, &st);
if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0)
continue;
 
if (S_ISDIR(st.st_mode))
{
chdir(ent->d_name);
dfs_remove_dir();
chdir("..");
}
remove(ent->d_name);
}
closedir(cur_dir);
}
 
int rmfile(const char *path_raw)
{
char old_path[100];
if (!path_raw)
return 1;
 
getcwd(old_path, 100);
     
if (chdir(path_raw) == -1)
{
LOG(ERROR)<< path_raw <<" is not a dir or access error\n";
return 2;
}
 
//    printf("path_raw : %s\n", path_raw);
dfs_remove_dir();
chdir(old_path);
 
    /*如果你想删除该目录本身的话,取消注释*/
unlink(old_path); 
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值