我看到它pid_t
是在 中定义的unistd.h
,并且文件描述符被定义为int
在 中fcntl.h
。但由于它们的使用方式相似,所以使用typedef
for 文件描述符不是有意义吗?
答案1
在阅读其他回复之前,我的猜测是pid_t
出于可移植性原因而存在。在过去的美好时光中,一些 Unix 有short
PID,其他 Unix 有int
PID,因此您可以为 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 数量内多次发生的时间。文件描述符不需要类型,因为文件本身可以通过其唯一名称轻松调用。