为什么 mkdir() 和 rmdir() POSIX 系统调用在不同的头文件中?

Why are the mkdir() and rmdir() POSIX system calls in different header files?

mkdir() 在 <sys/stat.h> 而 rmdir() 在 <unistd.h>。将它们放在同一个头文件中不是更有意义吗?

原因是,对于 mkdir(2),您在第二个参数中指定了 权限

  int mkdir(const char *pathname, mode_t mode);

这些模式标志和类型 mode_tsys/stat.h 中定义(至少通过在我的系统中包含 bits/stat.hbits/types.h 间接定义),所以看起来也适合在那里定义 mkdir() 。否则,包含 unistd.h 会导致错误,因为那里的类型 mode_t 是未知的。

相比之下,rmdir(2) 除了文件名外不接受任何参数,因此它可以保留在 unistd.h 中,因为没有其他依赖项。