C语言实现Linux下删除非空目录
#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下删除非空目录的更多相关文章
- Linux如何删除非空目录
这个问题很basic,不过还是困扰了我一段时间.(这里主要讨论的是命令行模式下) 我本来觉得应该使用命令 rmdir 但是发现它无法删除非空的目录. 后来发现了原来应该使用命令 rm -rf 目录名 ...
- Linux删除非空目录
Linux下如何删除非空目录 这个问题很basic,不过还是困扰了我一段时间.(这里主要讨论的是命令行模式下)我本来觉得应该使用命令 rmdir但是发现它无法删除非空的目录.后来发现了原来应该使用 ...
- Linux删除非空目录的方法
rmdir 无法删除非空目录. rm -rf 可以递归,强制,删除目录
- mac 下删除非空文件夹
Linux中rmdir命令是用来删除空的目录.使用方式: rmdir [-p] dirName 参数: -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除. 举例说明:rmdir folde ...
- php rmdir使用递归函数删除非空目录
我们大家都知道,php rmdir()函数用于删除空目录,但如果要删除非空目录,我们必须将非空目录中的文件或子目录删除,本文章向大家介绍php如何使用递归函数删除非空目录,需要的朋友可以参考一下.首先 ...
- php rmdir使用递归函数删除非空目录的方法
php rmdir()函数 rmdir ― 删除空目录 语法: bool rmdir ( string $dirname [, resource $context ] )尝试删除 dirname 所指 ...
- php 递归创建目录、递归删除非空目录、迭代创建目录
递归创建目录 方法一 function mk_dir($path){ if(is_dir($path)){ //参数本身是一个目录 return true; } if(is_dir(dirname($ ...
- linux下删除所有.svn目录
linux下删除所有.svn目录方法为 find . -type d -name ".svn"|xargs rm -rf 或者 find . -type d -i ...
- linux下使用非root账号安装zabbix-client
linux下使用非root账号安装zabbix-client使用非root账号rusky登录:[rusky@testServer]#tar zxvf zabbix-2.4.5.tar.gz #cd z ...
随机推荐
- ubuntu svn rabbitvcs 安装
参考链接:http://blog.csdn.net/weng_xianhu/article/details/10079179 32位系统完全按照上面链接安装没有问题,但是如果是64位系统,第六步下载资 ...
- zabbix 对/etc/ssh/sshd_config文件的监控 但status为unknowen
原因为该文件没有被访问的权限: # ll /etc/ssh/sshd_config -rw------- root root Apr : /etc/ssh/sshd_config 授权后再看: [ro ...
- HTML5学习笔记(五):CSS基础
CSS 指层叠样式表 (Cascading Style Sheets),在网页中用来定义网页的元素如何进行显示. CSS 对大小写不敏感.不过存在一个例外:如果涉及到与 HTML 文档一起工作的话,c ...
- Machine Learning Library (MLlib) Guide, BOOKS
download.microsoft.com/download/0/9/6/096170E9-23A2.../9780735698178.pdf Microsoft Azure Essential ...
- vue-cli+webpack在生成的项目中使用bootstrap方法(一)
在一个html页面中加入bootstrap是很方便,就是一般的将css和js文件通过Link和Script标签就行. 那么在一个用vue-vli生成的前端项目中如何加入?因为框架不一样了,略微要适应一 ...
- 每日英语:China to Move Slowly on One-Child Law Reform
BEIJING—China's family-planning agency is projecting a slow rollout for an easing of its one-child p ...
- LeetCode: Minimum Path Sum 解题报告
Minimum Path Sum Given a m x n grid filled with non-negative numbers, find a path from top left to b ...
- AIX上打包排除某些文件/文件夹
Syntax X/Open Standards: tar {-c|-r|-t|-u|-x} [-B] [ -d ] [ -E ] [ -F ] [-h ] [ -i ] [ -l ] [ -m ] [ ...
- Android之Activity切换
●假如有Activity01和Activity02,从Activity01切换到Activity02并传递参数. Activity01中: button.setOnClickListener(new ...
- JAVA-JSP内置对象之out对象
相关资料:<21天学通Java Web开发> out对象1.out对象用来向网页输出信息. 方法 返回值 方法说 ...