0

Linux の C で dir ツリーを作成したいと考えています。私はそのコードを書きました:

#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