【问题标题】:Create a directory创建目录
【发布时间】:2011-07-14 21:34:05
【问题描述】:

我正在尝试使用以下代码创建目录。它会编译,但不会创建目录。有什么建议吗?

#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
int main(void)
{
  const char base[] = "filename";
  char filename [ FILENAME_MAX ];
  int number = 42;
  sprintf(filename, "%s/%d", base, number);
  printf("filename = \"%s\"\n", filename);
  mkdir (filename, S_IRWXU);
  return 0;
}

【问题讨论】:

  • 为什么不捕获 mkdir 的返回码? linux.die.net/man/3/mkdir
  • 检查mkdir是否返回-1以及errno的值。
  • 确实如此。尝试询问它为什么不起作用! if (mkdir(filename, S_IRWXU) != 0) { perror("mkdir() error"); }.
  • @hari:请不要发布指向die.net 的链接。这个网站是一个糟糕的地方,信息过时,由于搜索引擎优化,这些信息首先出现在谷歌搜索结果中。使用 kernel.org - kernel.org/doc/man-pages/online/pages/man2/mkdir.2.html
  • 我的错。谢谢你告诉我。

标签: c


【解决方案1】:

“文件名”目录是否已经存在? mkdir() 一次只会创建一个目录;如果父目录也不存在,则必须先单独创建它。

【讨论】:

    【解决方案2】:

    很可能它无法创建目录,因为您正在尝试创建嵌套目录并且其父目录不存在。 mkdir 无法递归创建目录。但是,除非您正确检查程序中的返回码和错误,否则您只能猜测。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多