Files
為什麼有程序 ID (pid_t) 的類型,而不是文件描述符 (fd) 的類型?
我看到這
pid_t
是 typedef’d inunistd.h
,並且文件描述符被定義為int
infcntl.h
。但是由於它們以相似的方式使用,所以有一個typedef
for 文件描述符不是很有意義嗎?
在閱讀其他回復之前,我的猜測是
pid_t
出於便攜性原因而存在。在過去的美好時光中,一些 Unix 有short
PID,另一些有int
PID,因此您可以為 PID 定義特定於系統的類型。我不記得使用int
文件描述符所涉及的任何痛苦,即使在 64 位的早期也是如此。
我認為這是 C 標準(fcntl.h)和 POSIX 標準(unistd.h)之間的哲學差異。C 具有盡可能少的類型(包括 size_t 和 time_t),而 POSIX 具有盡可能多的類型以使程式碼更清晰(例如 pid_t、gid_t 和 size_t)。