Unix GCC声明:typedef\uu pid\t pid\t?

Unix GCC声明:typedef\uu pid\t pid\t?,unix,gcc,fork,Unix,Gcc,Fork,我对(例如)pid\t的声明感到困惑。什么意思?它是其他地方定义的另一种类型吗?如果是,在哪里?为什么我的types.h在Ubuntu13.04 64位定义的pid像: #ifndef __pid_t_defined typedef __pid_t pid_t; #define __pid_t_defined #endif 而不是像这样 typedef int pid_t; 我看到一些网站有.h类型的标题,声明是最后一种方式。这是一个: 更新: 好的,我发现一个pid是一个,是一个,是一个

我对(例如)pid\t的声明感到困惑。什么意思?它是其他地方定义的另一种类型吗?如果是,在哪里?为什么我的types.h在Ubuntu13.04 64位定义的pid像:

#ifndef __pid_t_defined
typedef __pid_t pid_t;
#define __pid_t_defined
#endif
而不是像这样

typedef int pid_t;
我看到一些网站有.h类型的标题,声明是最后一种方式。这是一个:

更新:


好的,我发现一个pid是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个int的,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一?POSIX只声明pid_t必须是有符号整数,那么为什么要让声明在头文件中输入soo deep

如果您通过“man types”提取
types.h
,那么在头文件的顶部(在手册页的“描述”下)应该存在一个include文件,该文件在某个点上将
“pid”t
定义为有符号整数(如果Ubuntu声称它们的类型符合POSIX;否则
pid\t
可以是任何类型)。符号
'.'
被认为是保留的(C标准,对C++一无所知)。如果我不得不胡乱猜测为什么
pid\u t
被定义为
\uu pid\u t
,而不是一些int,那是因为
\uu pid\u t
是Debian或Linux内核开发人员决定在所有库函数中使用的进程ID变量名;因此,只需更改
“\uu pid\u t”
,即可更改进程ID的整数大小


在提问之前,你应该先环顾四周,很容易找到类似的stackoverflow问题:。

好的,我找到了这个问题答案上的pid是什么意思:

引述

取消报价


所以pid_t是一个uuu pid_t,它是一个uu pid_t_类型,它是一个uu S32_类型,它是一个int。

为什么内核开发人员决定这样做?你给我的链接离题了
typedef __pid_t pid_t;
...
# define __STD_TYPE     typedef
__STD_TYPE __PID_T_TYPE __pid_t;    /* Type of process identifications.  */
...
#define __PID_T_TYPE        __S32_TYPE
...
#define __S32_TYPE      int