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

Bri*_*own 0 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;
}
Run Code Online (Sandbox Code Playgroud)

当a path是单个目录时,它可以,path = "./mydir"但是当我想创建一个目录树时,例如:path = "./mydir/a/b/c/d/"dirs不会被创建.为什么?

Dav*_*rtz 6

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

  • +1我爱*这个答案.有多少次我试图写"编写一些代码来解决你的问题".作为答案,只是因为害怕随之而来的火焰而退缩.谢谢你让我的一天,大卫= P. (3认同)