pid_t 的类型

机器环境:Lubuntu-16.04

首先查看  /usr/include 目录下的 unistd.h

其中有这样两行:

220    #include <bits/types.h>


263    typedef __pid_t pid_t;
即:pid_t 是 __pid_t 的别名。 

由此,我们到  /usr/include/x86_64-linux-gnu    目录下的  bits/types.h  文件中查找 : __pid_t

我们找到如下几行:

117    # define __STD_TYPE   typedef

121    #include <bits/typesizes.h>    /* Defines __*_T_TYPE macros.  */

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

于是可知 __pid_t 是 __PID_T_TYPE 的别名,我们到同一目录下查看文件: typesizes.h

我们找到了:

53    #define __PID_T_TYPE __S32_TYPE

文件typesizes.h 并没有include其他文件,但是我们可以在 bits/types.h 文件中找到如下内容:

91    #define __S32_TYPE int

 

所以,破案了。  pid_t 是 int 的别名。

对此我们可以写如下代码做测试:

#include <iostream>
#include <typeinfo>
#include <unistd.h>

using namespace std;

int main(){
        pid_t pid;
        cout << typeid(pid).name() << endl;          
        return 0;
}

输出为:

 

  由此可知  pid_t  的类型为  int

 

如果有帮助的话,希望可以点个赞哦

posted @ 2021-01-17 20:52  zeroPatrick  阅读(1260)  评论(0编辑  收藏  举报