3
進程的PID定義爲 pid_t pid; 而pid_t是不透明的數據類型。如果進程的ID號可以用int表示,爲什麼我們不應該把它聲明爲一個int族,而是隱藏它的用戶的數據類型?爲什麼進程的PID由不透明數據類型表示?
進程的PID定義爲 pid_t pid; 而pid_t是不透明的數據類型。如果進程的ID號可以用int表示,爲什麼我們不應該把它聲明爲一個int族,而是隱藏它的用戶的數據類型?爲什麼進程的PID由不透明數據類型表示?
這不是一個不透明的類型,而是一個整數類型的別名。例如,在我的系統,我發現在不同的頭文件如下:
typedef __pid_t pid_t;
...
# define __STD_TYPE typedef
__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */
...
#define __PID_T_TYPE __S32_TYPE
...
#define __S32_TYPE int
因此,你說得對,pid_t
只是一個int
。不過,我會說有幾個原因要做到這一點:
long int
),則只需更改typedef
,重新編譯並且所有內容都應正常工作。事實上,我相信這已經發生在不同的架構上。
+1指向我寫的維基百科中的某些東西! :) – 2012-02-15 09:01:23
謝謝collado。 – ChandanK 2012-02-16 05:59:20