如何使用C标准库(或其他)创建目录?

dauxcl2d  于 2023-10-16  发布在  其他
关注(0)|答案(6)|浏览(156)

感谢帮助。在“书”(k&r)中找不到任何提及这一点的地方。

ergxz8rk

ergxz8rk1#

通过调用[mkdir()](http://linux.die.net/man/2/mkdir)函数。链接到在线手册页面。要在您的(Linux)机器上获取该页面,请在终端中输入:

  1. $ man 2 mkdir

“2”很重要,称为manual page section number。由于您需要C函数“mkdir”的帮助,而不是命令行命令“mkdir”,因此您需要指定部分,否则您将默认获得命令。

dly7yett

dly7yett2#

虽然不是标准库的一部分,但大多数实现都包含mkdir():

  1. #include <dir.h>
  2. ...
  3. mkdir("directory");
mbyulnm0

mbyulnm03#

  1. NAME
  2. mkdir - create a directory
  3. SYNOPSIS
  4. #include <sys/stat.h>
  5. #include <sys/types.h>
  6. int mkdir(const char *pathname, mode_t mode);
  7. CONFORMING TO
  8. SVr4, BSD, POSIX.1-2001.
ryhaxcpt

ryhaxcpt4#

在Linux上,您可以使用POSIX mkdir()
有关文档,请单击该链接或从命令行尝试man 2 mkdir

chhkpiq4

chhkpiq45#

所以,现在是2023年了,仍然没有办法用C语言的纯标准库创建一个目录,因为仍然有没有目录的操作系统,仍然没有关于所有这些计算东西的约定,关于我们想要成为标准的东西。
对于MS Windows用途:

  1. #ifdef _WIN32 /* or whatever name for MS target platform, */
  2. /* according to your compiler convention.. */
  3. #include <direct.h>
  4. #endif
  5. /* ... */
  6. directory_name[] = "my_folder";
  7. _mkdir(directory_name);
  8. /* ... */

对于UNIX用途:

  1. #ifdef __unix__
  2. #include <sys/types.h>
  3. #include <sys/stat.h>
  4. #endif
  5. /* ... */
  6. directory_name[] = "my_folder";
  7. mkdir(directory_name, 0777); /* second argument is access-rights */
  8. /* ... */

gcc constant names for most platforms
对于clang,我没有找到常量名称,只知道对于MS Windows WIN32,可以使用clang编译器;只找到clang supported platforms
p.s不要忘记目录路径的平台相关斜杠样式-\是MS样式,/是UNIX样式。

展开查看全部

相关问题