【问题标题】:Creating directory in c在c中创建目录
【发布时间】:2012-09-29 14:57:23
【问题描述】:

我正在编写一些 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+");
    }
}

感谢您提供的任何帮助。

【问题讨论】:

    标签: c mkdir


    【解决方案1】:

    mkdir 的第二个参数应该是mode_t 类型。 chmod 手册页列出了可用的模式(可以组合在一起)。

    【讨论】:

      【解决方案2】:

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

      请参阅the mkdir manual page 了解更多信息。完整的标志列表见sys/stat.h(搜索“S_IRWXU”)

      【讨论】:

        【解决方案3】:

        根据this manpage,第二个参数是mode_t,它是一个数字类型,给出了想要的目录访问模式。此处应提供0777,一个八进制数,表示所有rwx,这受umask 的限制。

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

        【讨论】:

          猜你喜欢
          • 2015-09-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-14
          • 2021-09-07
          • 2014-08-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多