%20%E3%81%AB%E3%81%AF%E5%9E%8B%E3%81%8C%E3%81%82%E3%82%8B%E3%81%AE%E3%81%AB%E3%80%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E8%A8%98%E8%BF%B0%E5%AD%90%20(fd)%20%E3%81%AB%E3%81%AF%E5%9E%8B%E3%81%8C%E3%81%AA%E3%81%84%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
pid_t
は で typedef されておりunistd.h
、ファイル記述子は で定義されていることint
がわかりますfcntl.h
。しかし、それらは同様の方法で使用されるため、ファイル記述子に を使用する方が合理的ではないでしょうかtypedef
。
答え1
他の回答を読む前は、pid_t
移植性のために存在しているのだろうと推測していました。古き良き時代には、一部の Unix にはshort
PID があり、他の Unix にも PID があったため、PID にはシステム固有のタイプを定義します。64ビット化のごく初期の頃でさえ、ファイル記述子にint
使用することに苦労したことは思い出せません。int
答え2
これは、C 標準 (fcntl.h) と POSIX 標準 (unistd.h) の哲学の違いだと思います。C には、必要な数だけ型 (size_t や time_t など) がありますが、POSIX には、コードをわかりやすくするために必要な数だけ型 (pid_t、gid_t、size_t など) があります。
答え3
PID は、特定のパラメータ (時間、サイズ、期間など) に関連して一意のプロセスを識別するというより機能的な目的に使用できます。これにより、同じプロセスが x 時間内に複数回発生する可能性があるため、特定の PID への呼び出しが容易になります。ファイル記述子にはタイプは必要ありません。ファイル自体は一意の名前で簡単に呼び出すことができるためです。