在c中创建目录

时间:2012-10-09 09:51:19

标签: c mkdir

我正在研究一些c代码,并尝试以编程方式创建目录。我刚才发现mkdir(文件,“w +”)函数在创建目录后使目录可写但我刚刚注意到它在编译时会发出警告

warning: passing argument 2 of âmkdirâ makes integer from pointer without a cast

以下是我正在使用的代码

void checkLogDirectoryExistsAndCreate()
{
    struct stat st;
    char logPath[FILE_PATH_BUF_LEN];
    sprintf(logPath, "%s/logs", logRotateConfiguration->logFileDir);
    if (stat(logPath, &st) != 0)
    {
        printf("Making log directory\n");
        mkdir(logPath, "w+");
    }
}

感谢您提供的任何帮助。

3 个答案:

答案 0 :(得分:8)

根据this manpage,第二个参数是mode_t,它是一种数字类型,并提供目录所需的访问模式。在这里,您应该提供0777,一个八进制数字,表示rwx的所有内容,这受umask限制。

我不知道哪些信息适用于Windows。

答案 1 :(得分:4)

mkdir的第二个参数应为mode_t类型。 chmod手册页列出了可用模式(可以一起进行“或”运算)。

答案 2 :(得分:4)

mkdir函数的第二个参数不是字符串。它是定义模式的标志组合。

有关详细信息,请参阅the mkdir manual page。有关完整标记列表(搜索“S_IRWXU”)

,请参阅sys/stat.h