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。

Linux pid_t 类型的定义相关推荐

  1. linux下字节类型怎么定义,linux的sys/types.h 基本系统数据类型

    sys/types.h 的 中文名称 为 基本系统数据类型 在应用程序源文件中包含 以访问 _LP64 和 _ILP32 的定义. 此头文件还包含适当时应使用的多个基本派生类型.尤其是以下类型更为重要 ...

  2. linux 进程调度类型 总结,Linux进程模型总结

    来源于网络 原创不详 Linux进程通过一个task_struct结构体描述,在linux/sched.h中定义,通过理解该结构,可更清楚的理解linux进程模型.   包含进程所有信息的task_s ...

  3. linux shell 自定义函数(定义、返回值、变量作用域)介绍

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...

  4. linux时间类型localtime_r

    linux时间类型localtime_r,struct tm *p gettimeofday(&now ,NULL):取得当前时间的参数值,now可以是struct timespec 或者 s ...

  5. Linux文件类型及颜色标识整理

    Linux文件类型及颜色标识整理 使用工具: ls命令 ls –l:以常格式显示文件及目录的详细信息 例如:-rw-r--r--  1 root root       0 10月 12 13:32 2 ...

  6. linux文件类型及用户相关命令

    Linux文件类型: 普通文件:-,file(内容格式) 目录文件:d 块设备:  b 字符设备:c 符号链接文件:l 套接字文件:s 命名管道文件:p 文件:属主.属组 属主:拥有者 属组:所属的组 ...

  7. linux machine start,Linux中的MACH定义之MACHINE_START / MACHINE_END

    (写在转载之前) 在linux中machine对应一个设备,对于开发者而言对应一个新的项目,项目开展的初始需要对应定义一个MACH,在arch/arm/mach-xxx/目录下,此文件中定义了GPIO ...

  8. Linux基本命令及Linux文件类型

    Linux文件类型 1.普通文件它最常使用的一类文件,其特点是不包含有文件系统的结构信息.通常用户所接触到的文件,如图形文件.数据文件.文档文件.声音文件等都属于这种文件.这种类型的文件按其内部结构又 ...

  9. Linux文件类型发布啦!

    在windows下面是通过文件的扩展名来区分文件类型的,但是在linux中却不是这儿样的.在linux中就没有所谓的文件扩展名,一个linux文件能不能被执行时取决于它的属性中是否有x,与文件名一点关 ...

最新文章

  1. Docker网络模型(八)
  2. 《锋利的jQuery》之jQuery简介
  3. HashMap是如何工作的
  4. 进程间的通讯(IPC)方式
  5. vue中的ES6语法整理1
  6. 我的笔记本的鼠标又乱跑了!寻求帮助!
  7. 怎么查mac电脑是不是正品_mac新手必看教程—苹果Mac电脑怎么录屏?
  8. 解决ionic在手机上拍照图片旋转的问题
  9. 假设linux分配给u盘设备名是,嵌入式linux开发基础试卷-应用物理A答案
  10. codevs 1388 砍树
  11. 2020华为软挑热身赛
  12. 好看的PPT导航栏有哪些制作技巧
  13. W25Q256编程时需要关注的器件特性
  14. QQ音乐特有的.qmc3文件 转换成.mp3
  15. 【社招Java】腾讯、阿里,疯狂java讲义第五版pdf百度云
  16. android tv 文件管理,电视必备!5款文件管理器强力推荐
  17. AutoSar之CAN网络管理
  18. 如何用定积分求椭圆的周长_怎么用微积分求椭圆的周长?
  19. gazebo构建仿真场景并制作机器人模型
  20. python将pdf转成excel_PDF转EXCEL,python的这个技能知道吗?

热门文章

  1. 研究人员发现针对印度军队的网络间谍活动
  2. [转]VS清除打开项目时的TFS版本控制提示
  3. SQLSERVER之快速掌握T-SQL语句
  4. static 关键字
  5. while循环以及for循环的区别
  6. 使用 ODP.NET 访问 Oracle(.net如何访问Oracle)详解
  7. 两个Activity左右滑动手势切换
  8. Python 扯淡的Map-Reduce
  9. CCNP-EIGRP路由认证(附实验PDF下载)
  10. redis获取存在的键值_Redis 分布式锁、限流