我想在Linux上用C创建一个目录树。我写了那段代码:
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
static int dirExists(const char *path)
{
struct stat info;
if(stat( path, &info ) != 0)
return 0;
else if(info.st_mode & S_IFDIR)
return 1;
else
return 0;
}
int main(int argc, char **argv)
{
const char *path = "./mydir/firstdir/";
if(!dirExists(path))
{
mode_t mask = umask(0);
if(mkdir(path, S_IRWXU | S_IRWXG | S_IRWXO) == -1)
exit(-1);
umask(mask);
}
printf("%d\n", dirExists(path));
return 0;
}
当path
是单个目录时,可以说是path = "./mydir"
,但是当我想创建一个目录树时,例如:path = "./mydir/a/b/c/d/"
dirs不会被创建。为什么?
答案 0 :(得分:6)
您没有代码来创建目录树,因此您的代码不会创建目录树。如果要创建目录树,请编写代码来执行此操作。
答案 1 :(得分:2)
您要做的是创建路径为path
答案 2 :(得分:1)
您需要定义能够创建目录树的代码。换句话说,Mkdir不会递归地创建目录。
修改强> 在您发布的链接中,父目录已存在。