Chinaunix首页 | 论坛 | 博客
  • 博客访问: 239582
  • 博文数量: 74
  • 博客积分: 450
  • 博客等级: 下士
  • 技术积分: 290
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-12 08:46
文章分类

全部博文(74)

文章存档

2019年(3)

2018年(11)

2017年(5)

2016年(24)

2015年(20)

2007年(11)

我的朋友

分类: LINUX

2015-09-16 11:19:48

     sys/types.h 的 中文名称 为 基本系统数据类型 

  在应用程序源文件中包含 以访问 _LP64 和 _ILP32 的定义。

  此头文件还包含适当时应使用的多个基本派生类型。尤其是以下类型更为重要:

  caddr_t 核心地址。

  clock_t 表示系统时间(以时钟周期为单位)。

  comp_t 压缩的时钟滴答。

  dev_t 用于设备号。

  fd_set 文件描述集。

  fpos_t 文件位置。

  gid_t 数组值ID.

  ino_t i节点编号。

  off_t 用于文件大小和偏移量。

  mode_t 文件类型,文件创建模式。

  pid_t 进程ID和进程组ID

  ptrdiff_t 是一种带符号整型,用于对两个指针执行减法运算后所得的结果。

  rlim_t 资源限制;

  size_t 反映内存中对象的大小(以字节为单位)。

  ssize_t 供返回字节计数或错误提示的函数使用。

  time_t 以秒为单位计时。

  uid_t 数值用户ID.

  wchar_t 能表示所有不同的字符码。

  所有这些类型在 ILP32 编译环境中保持为 32 位值,并会在 LP64 编译环境中增长为 64 位值。

  实例:

  pid_t int 型

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

  1.首先在/usr/include/sys/types.h中有如下定义

  #include

  ……

  #ifndef __pid_t_defined

  typedef __pid_t pid_t;

  # define __pid_t_defined

  #endif

  可以看到pid_t 其实就是__pid_t类型。

  2.在/usr/include/bits/types.h中可以看到这样的定义

  #include

  #if __WORDSIZE == 32

  ……

  # define __STD_TYPE __extension__ typedef

  #elif __WORDSIZE == 64

  ……

  #endif

  ……

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

  可以看出__pid_t 有被定义为 __extension__ typedef __PID_T_TYPE类型的。

  3.在文件/usr/include/bits/typesizes.h中可以看到这样的定义(这个文件中没有包含任何的头文件):

  #define __PID_T_TYPE __S32_TYPE

  可以看出__PID_T_TYPE有被定义为__S32_TYPE这种类型。

  4.在文件/usr/include/bits/types.h中我们终于找到了这样的定义:

  #define __S32_TYPE int

  由此我们终于找到了pid_t的真实定义:实际他就是 int 类型的。

  其实很多类似于这种类型的定义,就是为了不同的操作系统,不同的处理器方便吧,无非是long int unsigned 之类的,理解就好~

阅读(1239) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~