为什么有进程 ID 的类型 (pid_t),但没有文件描述符 (fd) 的类型?

为什么有进程 ID 的类型 (pid_t),但没有文件描述符 (fd) 的类型?

我看到它pid_t是在 中定义的unistd.h,并且文件描述符被定义为int在 中fcntl.h。但由于它们的使用方式相似,所以使用typedeffor 文件描述符不是有意义吗?

答案1

在阅读其他回复之前,我的猜测是pid_t出于可移植性原因而存在。在过去的美好时光中,一些 Unix 有shortPID,其他 Unix 有intPID,因此您可以为 PID 定义系统特定的类型。我不记得使用int文件描述符有任何痛苦,即使是在 64 位的早期。

答案2

我认为这是 C 标准(fcntl.h)和 POSIX 标准(unistd.h)之间的哲学差异。 C 具有尽可能少的类型(包括 size_t 和 time_t),而 POSIX 具有尽可能多的类型以使代码更清晰(例如 pid_t、gid_t 和 size_t)。

答案3

PID 可用于更多功能性目的,用于识别与某些参数(即时间、大小、持续时间等)相关的唯一进程,从而更容易调用特定 PID,因为相同的进程可以在 x 数量内多次发生的时间。文件描述符不需要类型,因为文件本身可以通过其唯一名称轻松调用。

相关内容