Linux pid_t 类型的定义

pid_t 类型在 Linux 环境编程中用于定义进程 ID,需要引入头文件<sys/types.h>,首先看一下头文件/usr/include/sys/types.h中关于 pid_t 的定义。

#ifndef __pid_t_defined
typedef __pid_t pid_t;
# define __pid_t_defined
#endif

可见pid_t等同于__pid_t,继续寻找__pid_t的定义。

头文件<sys/types.h>中包含了头文件<bits/types.h>,根据名称可见其与类型的定义相关。

我们在头文件<bits/types.h>中找到了__pid_t的定义。

#if __WORDSIZE == 32
#define __STD_TYPE __extension__ typedef
#elif __WORDSIZE == 64
# define __STD_TYPE             typedef
#else
# error
#endif

 __STD_TYPE __PID_T_TYPE __pid_t;        /* Type of process identifications.  */

也就是说如果我们编译的程序是 32 位的,那么__pid_t的定义如下:

__extension__ typedef __PID_T_TYPE __pid_t;

如果我们编译的程序是 64 位的,那么__pid_t的定义如下:

typedef __PID_T_TYPE __pid_t;

其中__extension__的作用是:GCC 对标准 C 语言进行了扩展,但用到这些扩展功能时,编译器会提出警告,使用__extension__关键字会告诉GCC 不要提出警告。

__pid_t的定义等同于__PID_T_TYPE,我们继续寻找__PID_T_TYPE的定义,在头文件<bits/typesizes.h>中我们发现__PID_T_TYPE的定义如下:

#define __PID_T_TYPE            __S32_TYPE

至此,我们找到了pid_t的定义等同于__S32_TYPE。那__S32_TYPE又是什么类型呢?我们返回至头文件<bits/types.h>发现有如下定义:

#define __S32_TYPE              int

至此,我们得出如下结论:

pid_t 等于 int。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值