找回密码
 注册
关于网站域名变更的通知
查看: 343|回复: 1
打印 上一主题 下一主题

Linux C编程之pid_t的类型定义

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-7-26 10:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
pid_t的类型定义
创建进程时经常会用到进程号的类型定义:pid_t。我们都知道这个类型定义实际上就是int型。但是在linux下的c中的头文件中这个定义到底是怎么定义的呢?今天就把以前找这个定义的过程贴出来:$ G6 {+ K  o) U  K  n

& X4 Q' v3 ?- ?% K+ Z1 k. _, J1.首先在/usr/include/sys/types.h中有如下定义
$ A/ I! y' A/ y* l
5 {$ B* I/ t7 x8 A#include <bits/types.h>8 E, ~$ D6 J; q6 U
     ......- H* }7 Y" v, g' b7 F
    9 ~1 U7 s. D( |( U; w& M5 ~7 g
#ifndef __pid_t_defined# V% D; b9 ^" A$ N6 r  V  P6 ]
typedef __pid_t pid_t;
( E  @( Y& a; v; m8 b# define __pid_t_defined9 r6 s' z, [& r+ ~
#endif* C0 a0 I$ g4 ~5 l1 ^' D+ v
可以看到pid_t 其实就是__pid_t类型。. ^0 H6 O" B; |$ l  W- D- ~
) S! o9 M! z: y+ Q
2.在/usr/include/bits/types.h中可以看到这样的定义' \! V! Y8 W8 @0 I3 ~2 X

4 Y* R% W0 T" G" A. y, }#include <bits/typesizes.h>
. w: a) m' K" Q- A" T( t5 V6 e% a8 N$ V- j$ _; m
#if __WORDSIZE == 32$ @; p- _6 }7 ]: r
        ......: d' j- `5 D. @' U
# define __STD_TYPE        __extension__ typedef2 g2 F5 j: j, L, e6 w+ N. ~9 h
#elif __WORDSIZE == 64+ _7 T. `( T1 g& _: m  F: u" [
          ......
. Z6 W* N7 Q7 u' Y$ F3 S# v. Z7 u#endif/ n0 c6 }+ N6 z$ c
        ......1 b7 n: [( c2 w" A$ q4 D
__STD_TYPE __PID_T_TYPE __pid_t;    /* Type of process identifications.  */. j+ P! A. |  N5 Z

  J' y+ b: U$ h# q* Y' g可以看出__pid_t 有被定义为 __extension__ typedef  __PID_T_TYPE类型的。
9 \  g+ ^, w3 }( n4 E5 ^/ r5 }6 W0 C) q, U7 \/ J
3.在文件/usr/include/bits/typesizes.h中可以看到这样的定义(这个文件中没有包含任何的头文件):
% q  q; E$ E! |' u: I/ ~
& c) |2 S/ x2 m! _* H; H#define __PID_T_TYPE        __S32_TYPE3 h- u7 r& ?" ?% O( q/ r- g

$ K. D3 O1 J' o( S可以看出__PID_T_TYPE有被定义为__S32_TYPE这种类型。' }5 h  f1 G5 A: Y

5 |$ [5 l% D* A: W4.在文件/usr/include/bits/types.h中我们终于找到了这样的定义:
; g2 {  c9 H$ Z; h& S/ L  {: v2 W: s8 B4 `$ W3 E
#define    __S32_TYPE        int4 W' s( ?! }2 i% D8 I, Z% n
+ o+ l$ X7 `2 C; Q
由此我们终于找到了pid_t的真实定义:实际他就是  int  类型的。

) v; O' J  O% ?+ c7 F! t

7 I: A, D* [0 K7 j) y5 e, a

! E" ~. M0 m0 n2 f
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 23:55 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表