在C中创建目录,linux不创建子目录(目录树) - 为什么?

时间:2013-08-12 21:19:10

标签: c linux makefile mkdir

我想在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不会被创建。为什么?

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

您要做的是创建路径为path

的文件夹

答案 2 :(得分:1)

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

修改 在您发布的链接中,父目录已存在。