#include <sys/stat.h>
#include <dirent.h>
#include <fcntl.h> /**
* 递归删除目录(删除该目录以及该目录包含的文件和目录)
* @dir:要删除的目录绝对路径
*/
int remove_dir(const char *dir)
{
char cur_dir[] = ".";
char up_dir[] = "..";
char dir_name[];
DIR *dirp;
struct dirent *dp;
struct stat dir_stat; // 参数传递进来的目录不存在,直接返回
if ( != access(dir, F_OK) ) {
return ;
} // 获取目录属性失败,返回错误
if ( > stat(dir, &dir_stat) ) {
perror("get directory stat error");
return -;
} if ( S_ISREG(dir_stat.st_mode) ) { // 普通文件直接删除
remove(dir);
} else if ( S_ISDIR(dir_stat.st_mode) ) { // 目录文件,递归删除目录中内容
dirp = opendir(dir);
while ( (dp=readdir(dirp)) != NULL ) {
// 忽略 . 和 ..
if ( ( == strcmp(cur_dir, dp->d_name)) || ( == strcmp(up_dir, dp->d_name)) ) {
continue;
} sprintf(dir_name, "%s/%s", dir, dp->d_name);
remove_dir(dir_name); // 递归调用
}
closedir(dirp); rmdir(dir); // 删除空目录
} else {
perror("unknow file type!");
} return ;
} int main()
{
string dstpath = "/DATA/123"; //如果目录存在就删除目录
if (access(dstpath.c_str(), ) == )
{
cout << "remove " << dstpath << endl;
int flag = remove_dir(dstpath.c_str());
cout << flag << endl;
}
}

C语言实现Linux下删除非空目录的更多相关文章

  1. Linux如何删除非空目录

    这个问题很basic,不过还是困扰了我一段时间.(这里主要讨论的是命令行模式下) 我本来觉得应该使用命令 rmdir 但是发现它无法删除非空的目录. 后来发现了原来应该使用命令 rm -rf 目录名 ...

  2. Linux删除非空目录

    Linux下如何删除非空目录   这个问题很basic,不过还是困扰了我一段时间.(这里主要讨论的是命令行模式下)我本来觉得应该使用命令 rmdir但是发现它无法删除非空的目录.后来发现了原来应该使用 ...

  3. Linux删除非空目录的方法

    rmdir 无法删除非空目录. rm -rf 可以递归,强制,删除目录

  4. mac 下删除非空文件夹

    Linux中rmdir命令是用来删除空的目录.使用方式: rmdir [-p] dirName 参数: -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除. 举例说明:rmdir folde ...

  5. php rmdir使用递归函数删除非空目录

    我们大家都知道,php rmdir()函数用于删除空目录,但如果要删除非空目录,我们必须将非空目录中的文件或子目录删除,本文章向大家介绍php如何使用递归函数删除非空目录,需要的朋友可以参考一下.首先 ...

  6. php rmdir使用递归函数删除非空目录的方法

    php rmdir()函数 rmdir ― 删除空目录 语法: bool rmdir ( string $dirname [, resource $context ] )尝试删除 dirname 所指 ...

  7. php 递归创建目录、递归删除非空目录、迭代创建目录

    递归创建目录 方法一 function mk_dir($path){ if(is_dir($path)){ //参数本身是一个目录 return true; } if(is_dir(dirname($ ...

  8. linux下删除所有.svn目录

    linux下删除所有.svn目录方法为    find . -type d -name ".svn"|xargs rm -rf    或者    find . -type d -i ...

  9. linux下使用非root账号安装zabbix-client

    linux下使用非root账号安装zabbix-client使用非root账号rusky登录:[rusky@testServer]#tar zxvf zabbix-2.4.5.tar.gz #cd z ...

随机推荐

  1. Angularjs学习笔记5_scope和$rootScope

    $rootScope  $rootScope 是最顶级的scope,它对应着含有 ng-app 指令属性的那个DOM元素.     app.run(function($rootScope) {     ...

  2. studying Bitcoin

    https://github.com/bitcoinbook/bitcoinbook/blob/develop/book.asciidoc https://github.com/bitcoin/bip ...

  3. django_simple_captcha使用笔记

    一.先来官方文档的步骤: Install django-simple-captcha via pip: pip install  django-simple-captcha Add captcha t ...

  4. RHEL7 富规则删除

    1. 查看已经创建好的富规则 firewall-cmd --list-rich-rules 2. 删除富规则(******代表已经创建好的完整富规则内容) firewall-cmd --remove- ...

  5. (原创)一个和c#中Lazy<T>类似的c++ Lazy<T>类的实现

    在.net 4.0中增加一个延迟加载类Lazy<T>,它的作用是实现按需延迟加载,也许很多人用过.一个典型的应用场景是这样的:当初始化某个对象时,该对象引用了一个大对象,需要创建,这个对象 ...

  6. 【驱动】linux驱动程序开发及环境搭建

    1.mystery引入 1)设备驱动程序对外提供如下的功能:        1)设备初始化:对硬件设备进行初始化操作        2)数据交换:数据交换包括由内核层向硬件层传送数据.从硬件层读取数据 ...

  7. MFC让进程利用所有处理器核心

    参考资料: http://blog.csdn.net/baodi_z/article/details/1857820 http://blog.csdn.net/cbnotes/article/deta ...

  8. 练习1 Just Java

    任务:做这样一个界面,选择数量,自动计算价格.超级简单.. <?xml version="1.0" encoding="utf-8"?> <a ...

  9. UEFI格式预装win8安装win7

    如果本本预装的是win8,而且是较新款的机型,那么当你想要格掉win8,装win7系统时就会遇到问题.主要有两个: 1)安装win7时,笔记本无法识别系统光盘或u盘启动盘 ,提示:屏幕显示“image ...

  10. Node.js学习笔记(6)--异步变同步

    说明(2017-5-3 14:59:03): 1. 异步变同步: var fs = require("fs"); var documents = []; fs.readdir(&q ...