首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pid_t类型的定义

pid_t类型的定义

作者头像
恋喵大鲤鱼
发布2018-08-03 10:08:56
2.4K0
发布2018-08-03 10:08:56
举报
文章被收录于专栏:C/C++基础C/C++基础C/C++基础

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。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年05月06日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档