pid_t数据类型

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的时候判断出错的情况?

发表评论