為什麼有進程 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 數量內多次發生的時間。文件描述符不需要類型,因為文件本身可以通過其唯一名稱輕鬆調用。

相關內容