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

时间:2018-10-13 14:37:41

标签: c linux posix header-files system-calls

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

1 个答案:

答案 0 :(得分:6)

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

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

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

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