0

我想在 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;
}

可以说,当 apath是单个目录时,path = "./mydir"但是当我想创建目录树时,例如:path = "./mydir/a/b/c/d/"未创建目录。为什么?

4

3 回答 3

6

您没有创建目录树的代码,因此您的代码不会创建目录树。如果要创建目录树,请编写代码来执行此操作。

于 2013-08-12T21:20:41.700 回答
2

您所做的是创建一个文件夹,其路径为path

于 2013-08-12T21:22:34.973 回答
1

您需要定义能够创建目录树的代码。换句话说,Mkdir 不会递归地创建目录。

编辑: 在您发布的链接中,父目录已经存在。

于 2013-08-12T21:22:14.270 回答