プロセスID(pid_t)には型がありますが、ファイル記述子(fd)に型がないのはなぜですか?

プロセスID(pid_t)には型がありますが、ファイル記述子(fd)に型がないのはなぜですか?

pid_tで定義され、unistd.hファイル記述子intがで定義されていることがわかりますfcntl.h。しかし、同様の方法で使用されるので、typedefforファイル記述子を使用するのは合理的ではないでしょうか?

答え1

他の応答を読む前に、これはpid_t移植性の理由で存在すると思います。以前は、一部のUnixにはshortPIDがあり、他のUnixにはintPIDが含まれていたため、PIDにシステム固有のタイプを定義できました。int64ビット初期にもファイルディスクリプタを使用するのに苦労した記憶はありません。

答え2

私はこれがC標準(fcntl.h)とPOSIX標準(unistd.h)の哲学的な違いだと思います。 Cにはできるだけ少ないタイプ(size_tとtime_tを含む)がありますが、POSIXにはコードをより明確にするためにできるだけ多くのタイプ(pid_t、gid_t、size_tなど)があります。

答え3

PIDは、特定のパラメータ(時間、サイズ、期間など)に関連する一意のプロセスを識別するためにより機能的な目的に使用でき、同じプロセスがx時間内に複数回発生する可能性があるため、特定のPIDをより簡単に呼び出すできます。ファイル記述子には型は必要ありません。ファイル自体は一意の名前で簡単に呼び出すことができるからです。

関連情報