CentOS6.4上,线程ID数据类型pthread_t在<bits/pthreadtypes.h>里定义了unsigned long,而进程ID的类型稍微稍微绕圈子一点
在unistd.h和sys/types.h都能找到:
<unistd.h>
# ifndef __pid_t_defined typedef __pid_t pid_t; # define __pid_t_defined # endif
而__pid_t能在bits/types.h里找到
<bits/types.h> __STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */
进而__PID_T_TYPE在bits/typesizes.h里
<bits/typesizes.h> #define __PID_T_TYPE __S32_TYPE
最终可以看到pid实际上是一个int类型
<bits/types.h> #define __S32_TYPE int
为什么定义一个int而不是一个无符号呢?难道是为了fork的时候判断出错的情况?