Ich sehe, dass pid_t
der Typ in definiert ist unistd.h
und Dateideskriptoren so definiert sind, dass sie int
in sind fcntl.h
. Aber da sie auf ähnliche Weise verwendet werden, wäre es dann nicht sinnvoll, einen typedef
für Dateideskriptoren zu haben?
Antwort1
Bevor ich die anderen Antworten gelesen habe, war meine Vermutung, dass es pid_t
aus Portabilitätsgründen existiert. In der guten alten Zeit hatten einige Unixe short
PIDs, andere hatten int
PIDs, also definiert man einen systemspezifischen Typ für PID. Ich kann mich nicht erinnern, dass die Verwendung int
für einen Dateideskriptor Probleme bereitet hätte, nicht einmal in den frühen Tagen der 64-Bit-Version.
Antwort2
Ich denke, dass dies ein philosophischer Unterschied zwischen dem C-Standard (fcntl.h) und dem POSIX-Standard (unistd.h) ist. C hat so wenige Typen wie nötig (einschließlich size_t und time_t), während POSIX so viele Typen hat, wie den Code übersichtlicher machen (wie pid_t, gid_t und size_t).
Antwort3
PID kann für funktionalere Zwecke verwendet werden, um den eindeutigen Prozess in Bezug auf bestimmte Parameter (z. B. Zeit, Größe, Dauer usw.) zu identifizieren. Dies erleichtert das Aufrufen des spezifischen PID, da derselbe Prozess über einen bestimmten Zeitraum hinweg mehrmals auftreten kann. Dateideskriptoren benötigen keinen Typ, da die Datei selbst problemlos mit ihrem eindeutigen Namen aufgerufen werden kann.