历史上,某些UNIX变量已与某些C数据类型联系在一起,例如,历史上主、次设备号存放在一个16位的短整型中, 8位表示主设备号,另外 8位表示次设备号。但是,很多较大的系统需要用多于 256个值来表示其设备号,于是,就需要有一种不同的技术。
(确实, SVR4用32位表示设备号:14位用于主设备号,18位用于次设备号。)
头文件<sys/types.h>中定义了某些与实现有关的数据类型,它们被称之为基本系统数据类型(primitive system data type)。有很多这种数据类型定义在其他头文件中。在头文件中这些数据类型都是用C的typedef设施来定义的。它们绝大多数都以 _t 结尾。表2-8中列出了本书将使用的基本系统数据类型。
caddr_t 内存地址
clock_t 时钟滴答计数器(进程时间)comp_t 压缩的时钟滴答
dev_t 设备号(主和次)
fd_set 文件描述符集
fpos_t 文件位置
gid_t 数值组ID
ino_t i 节点编号
mode_t 文件类型,文件创建方式
n1ink_t 目录项的连接计数
off_t 文件长度和位移量(带符号的)
pid_t 进程ID和进程组ID(带符号的)
ptrdiff_t 两个指针相减的结果(带符号的)
r1im_t 资源限制
sig_atomic_t 能原子地存取的数据类型
sigset_t 信号集
size_t 对象(例如字符串)长度(不带符号的)
ssize_t 返回字节计数的函数(带符号的)
time_t 日历时间的秒计数器( 1.10节)
uid_t 数值用户ID
wchar_t 能表示所有不同的字符码
用这种方式定义了这些数据类型后,在编译时就不再需要考虑随系统不同而变的实施细节,在本书中涉及到这些数据类型的地方,我们会说明为什么使用它们。
自《Unix高级环境编程》