实现的小函数 mkdir rmdir
来源:互联网 发布:成都伊藤网络超市 编辑:程序博客网 时间:2024/06/11 04:32
int mkdirs(const char *path)
{
char pathname[PATH_MAX];
strcpy(pathname, path);
int i;
int len = strlen(pathname);
if (pathname[len -1] != '/') {
strcat(pathname, "/");
}
len = strlen(pathname);
for (i=1; i<len; i++) {
if (pathname[i] == '/') {
pathname[i] = 0;
if (access(pathname, F_OK) != 0) {
if (mkdir(pathname, 0755) == -1) {
my_log_error("mkdir(%s) failed. Reason:%s.", pathname, strerror(errno));
return -1;
}
}
pathname[i]='/';
}
}
return 0;
}
int rmdirs(const char *name)
{
int ret = 0;
DIR *dir;
struct dirent *read_dir;
struct stat st;
char buf[PATH_MAX];
if (lstat(name, &st) < 0) {
if (errno == ENOENT) {
return ret;
}
my_log_error("lstat(%s) failed. Reason:%s.", name, strerror(errno));
return -1;
}
if (S_ISDIR(st.st_mode)) {
if ((dir = opendir(name)) == NULL) {
my_log_error("opendir(%s) failed. Reason:%s.", name, strerror(errno));
return -1;
}
while ((read_dir = readdir(dir)) != NULL) {
if (strcmp(read_dir->d_name, ".") == 0 || strcmp(read_dir->d_name, "..") == 0) {
continue;
}
sprintf(buf, "%s/%s", name, read_dir->d_name);
ret = rmdirs(buf);
if (0 != ret) {
return -1;
}
}
closedir(dir);
}
if (remove(name) != 0) {
my_log_error("opendir(%s) failed. Reason:%s.", name, strerror(errno));
return -1;
}
return ret;
}
- 实现的小函数 mkdir rmdir
- mkdir、rmdir函数
- 4.20 mkdir和rmdir函数-目录的创建与删除
- 23-与目录有关的函数-mkdir 与 rmdir
- 目录函数mkdir/rmdir/getcwd/chdir
- mkdir , rmdir ,rm,cp ,mv的使用方法,
- linux ls、mkdir、rmdir命令的使用
- Linux下的mkdir&&rmdir指令
- 9Linux服务器编程之:mkdir()函数和rmdir()函数
- linux下C语言中的mkdir函数与rmdir函数
- unix环境高级编程-mkdir和rmdir函数
- linux下C语言中mkdir和rmdir函数
- Linux下C语言中mkdir和rmdir函数
- mkdir - rmdir 目录操作
- rm/mkdir/rmdir
- linux---mkdir rmdir指令
- mkdir和rmdir命令
- linux命令--mkdir rmdir
- Drools安装配置
- java 内存CMS GC
- 使用多功能编辑控件时注意初始化
- /dev/zero和/dev/null (转)
- Form个性化--调用Procedure
- 实现的小函数 mkdir rmdir
- [评测] 利用维基百科实现高质量中文简繁转换
- 详解TCC89x的Hive Registry设置
- 最近写的一个小软件
- Span 不换行
- VFP 6.0中Datetime在内存中的格式
- 从输入网址到显示页面:浏览器工作原理拆解分析
- NIMM简介(一)
- 在eclipse中直接查Java API docs