3

我正在处理一些 c 代码,并试图以编程方式创建一个目录。不久前我发现 mkdir(file, "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+");
    }
}

感谢您的任何帮助,您可以提供。

4

3 回答 3

8

根据这个 manpage,第二个参数是 a mode_t,它是一个数字类型,给出了想要的目录访问模式。在这里你应该提供0777一个八进制数,意思是所有的rwx,这是受限制的umask

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

于 2012-10-09T09:56:01.443 回答
5

mkdir的第二个参数应该是 type mode_tchmod手册页列出了可用的模式(可以一起使用 OR'd)。

于 2012-10-09T09:53:24.457 回答
4

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

有关更多信息,请参阅mkdir 手册页。请参阅sys/stat.h以获取完整的标志列表(搜索“S_IRWXU”)

于 2012-10-09T09:54:32.577 回答