unistd.h 和 sys/types.h 在 linux 中的区别
Difference between unistd.h and sys/types.h in linux
当我在 The Open Group 中搜索 header unistd.h 时,我发现它包含标准符号常量和类型,对于 sys/types.h 它表示数据类型。
然后我发现两者都有uid_t、pid_t和几个类似的类型。
我很困惑为什么他们会这样划分,他们之间有什么区别。我用谷歌搜索,但没有得到满意的答案。
如果有人能给我详细的解释,我将不胜感激。
谢谢。
POSIX和Cheader在细粒度文件中的划分可能来自过去编译可能需要很长时间,并添加不必要的header文件让时间变长了。
如果你只需要 OS 类型,比如你的函数原型,那么只需要 #include <sys/types.h>
。但是,如果您需要函数定义,那么您可以 #include <unistd.h>
或任何其他系统 header,视需要而定。
当然有些类型在两个 header 中都有,因为您不能在没有必要类型的情况下声明某些函数。
但是这些相同类型的不同声明保证是一样的,所以你把两者都包含是没有问题的。
当我在 The Open Group 中搜索 header unistd.h 时,我发现它包含标准符号常量和类型,对于 sys/types.h 它表示数据类型。
然后我发现两者都有uid_t、pid_t和几个类似的类型。
我很困惑为什么他们会这样划分,他们之间有什么区别。我用谷歌搜索,但没有得到满意的答案。
如果有人能给我详细的解释,我将不胜感激。
谢谢。
POSIX和Cheader在细粒度文件中的划分可能来自过去编译可能需要很长时间,并添加不必要的header文件让时间变长了。
如果你只需要 OS 类型,比如你的函数原型,那么只需要 #include <sys/types.h>
。但是,如果您需要函数定义,那么您可以 #include <unistd.h>
或任何其他系统 header,视需要而定。
当然有些类型在两个 header 中都有,因为您不能在没有必要类型的情况下声明某些函数。
但是这些相同类型的不同声明保证是一样的,所以你把两者都包含是没有问题的。