Linux中 pid_t 类型的定义.
说明:涉及到的头文件(.h),目录默认都是基于 /usr/include/ 目录.
1.在 "/sys/types.h"中,有下列内容:
#include <bits/types.h>
#ifndef __pid_t_defined
typedef __pid_t pid_t;
# define __pid_t_defined
#endif
很明显, pid_t 只是 __pid_t 的别名.或者说, pid_t 类型其实是 __pid_t 类型.
2.在"bits/types.h"中,有下列内容:
/* We want __extension__ before typedef's that use nonstandard base types
118 such as `long long' in C89 mode. */
# define __STD_TYPE __extension__ typedef
#elif __WORDSIZE == 64
...
#include <bits/typesizes.h> /* Defines __*_T_TYPE macros. */
__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications.
*/
由第一行和第二行的注释中,我们可以忽略 __extension__ 的分析.故 __STD_TYPE 表示 typedef.所以在第七行的代码中,可以知道:
__pid_t 类型 其实是 __PID_T_TYPE 类型.
3.在 "bits/typesizes.h" 中,有以下内容:
/* See <bits/types.h> for the meaning of these macros. This file exists so
28 that <bits/types.h> need not vary across different GNU platforms. */ ...
#define __PID_T_TYPE __S32_TYPE
由此我们知道 __PID_T_TYPE 就是 __S32_TYPE 类型.并且这个文件没有引用任何其他的头文件.
4.在 "bits/types.h" 文件中,我们看到有以下内容:
#define __S32_TYPE int
由此,最终可以知道,__S32_TYPE 就是 int 类型,也就是说, pid_t 其实就是 int 类型.
引自: http://doudouclever.blog.163.com/blog/static/17511231020112248130302/
Linux中 pid_t 类型的定义.的更多相关文章
- Linux中pid_t类型为int类型
1. 查看man手册,找到pid_t,可以通过getpid函数来看 2. 打开sys/types.h 3. 打开bits/types.h 4. 打开bits/typesizes.h 找不到相关的头文件 ...
- c#中枚举类型的定义与使用
介绍枚举是一个指定的常数,其基础类型可以是除 Char 外的任何整型.如果没有显式声明基础类型,则使用 Int32.编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举.定义默认基数从O开 ...
- C++中的类型重定义
发现重复定义是由于从两个不同的路径包含了同一个头文件而引起的,同事也建议从另外一个路径打开工程试试, 这才慢慢发现了原因.这个原因可能有些拗口,而事实上要出现这种错误也有些"曲折" ...
- schema中字段类型的定义
当schema中字段类型为String时,保存的时候如果该字段为Number也可以保存成功,mongoose会自动将其转换为数字字符串. 当schema中字段类型为Number时,保存的时候如果该字段 ...
- linux中档案类型
我们用ls-l命令时,在第一列的第一个字符表示是档案类型.如: 那d和-等这些都表示什么呢? [ d ]-------目录 [ - ]--------文件 [ l ]---------连结档(link ...
- LINUX中关于SIGNAL的定义
/* Signals. */ #define SIGHUP 1 /* Hangup (POSIX). */ #define SIGINT 2 /* Interrupt (ANSI). */ #defi ...
- linux中的文件类型以及查看文件类型的方法
Linux文件类型和文件的文件名所代表的意义是两个不同的概念,在linux中文件类型与文件扩展名没有关系.它不像Windows那样是依靠文件后缀名来区分文件类型的,在linux中文件名只是为了方便操作 ...
- Linux中THIS_MODULE宏定义详解
一直都在耿耿于怀,这个THIS_MODULE到底是个什么玩意,linux内核中无处不在的东西.今天上网搜了一下,算是基本明白了.网上牛人写的已经比较详细,另外目前暂时没有时间往更深层次分析,所以直接贴 ...
- Linux中的两个经典宏定义:获取结构体成员地址,根据成员地址获得结构体地址;Linux中双向链表的经典实现。
倘若你查看过Linux Kernel的源码,那么你对 offsetof 和 container_of 这两个宏应该不陌生.这两个宏最初是极客写出的,后来在Linux内核中被推广使用. 1. offse ...
随机推荐
- 给AVS添加描述(how to add a description to a video)
UPDATE you might need edit few files. 1. add the input field to the tpl file: /templates/frontend/yo ...
- JQUERY 常用方法大全
Attribute: $("p").addClass(css中定义的样式类型); 给某个元素添加样式 $("img").attr({src:"test ...
- JVM笔记-逃逸分析
参考: http://www.iteye.com/topic/473355http://blog.sina.com.cn/s/blog_4b6047bc01000avq.html 什么是逃逸分析(Es ...
- 使用UIImagePickerController时3DTouch引起的Crash问题的解决--备用
一.crash的场景 程序中用到UIImagePickerController时,如果在IPhone6S上运行APP,当forceTouch 一个图片时程序会crash,并附带如下crash mess ...
- 【Maven实战】依赖的范围
在Maven中有三大模块,分别是依赖.仓库.生命周期和插件,我们接下来下来介绍下依赖,为了方便起见我们还是以案例来说: 1.首先建立一个maven项目,这里我建立一个user的项目 2.接下来我们在这 ...
- [Android] hid设备按键流程简述
hexdump /dev/hidraw0就能看到usbhid设备传输过来的裸流 如:按下Input键 003ae60 0000 0096 8000 006b 0000 0000 0000 0000 * ...
- linux wenjian
文件锁是一种文件读写机制,在任何特定的时间只允许一个进程访问一个文件.利用这种机制能够使读写单个文件的过程变得更安全. 在这篇文章中,我们将探讨Linux中不同类型的文件锁,并通过示例程序来理解它们之 ...
- Android新浪微博客户端(四)——添加多个账户及认证
原文出自:方杰| http://fangjie.info/?p=75转载请注明出处 二.获取用户信息并保存数据库 上面说到加载AuthActivity有两种情况,其中一种就是授权成功回调,在授权回调成 ...
- Flask+Mysql搭建网站之安装Mysql
安装Mysql # sudo apt-get install mysql-server 安装过程需要输入root密码,这个密码是mysql 的root密码,之后连接mysql会用到,这个要记住. 安装 ...
- HDU 3016 Man Down (线段树+dp)
HDU 3016 Man Down (线段树+dp) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...