为什么 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_t
在 sys/stat.h
中定义(至少通过在我的系统中包含 bits/stat.h
和 bits/types.h
间接定义),所以看起来也适合在那里定义 mkdir() 。否则,包含 unistd.h
会导致错误,因为那里的类型 mode_t
是未知的。
相比之下,rmdir(2)
除了文件名外不接受任何参数,因此它可以保留在 unistd.h
中,因为没有其他依赖项。
mkdir() 在 <sys/stat.h>
而 rmdir() 在 <unistd.h>
。将它们放在同一个头文件中不是更有意义吗?
原因是,对于 mkdir(2)
,您在第二个参数中指定了 权限:
int mkdir(const char *pathname, mode_t mode);
这些模式标志和类型 mode_t
在 sys/stat.h
中定义(至少通过在我的系统中包含 bits/stat.h
和 bits/types.h
间接定义),所以看起来也适合在那里定义 mkdir() 。否则,包含 unistd.h
会导致错误,因为那里的类型 mode_t
是未知的。
相比之下,rmdir(2)
除了文件名外不接受任何参数,因此它可以保留在 unistd.h
中,因为没有其他依赖项。