历史上,某些UNIX系统变量已与某些C数据类型联系在一起。例如,历史上主、次设备号一直存放在一个16位的短整型中,8位表示主设备号,另外8位表示次设备号。但是,很多较大的系统需要用多于256个值来表示其设备号,于是,就需要有一种不同的技术。
头文件<sys/types.h>中定义了某些与实现有关的数据类型,它们被称为基本系统数据类型(primitive system data type)。还有很多这种数据类型定义在其他头文件中。在头文件中,这些数据类型都是用C的typedef功能来定义的。它们绝大多数都以_t结尾。
表1 某些常用的基本系统数据类型
类型 | 说明 |
caddr_t | 核心地址 |
clock_t | 时钟滴答计数器(进程时间) |
comp_t | 压缩的时钟滴答 |
dev_t | 设备号(主和次) |
fd_set | 文件描述符集 |
fpos_t | 文件位置 |
gid_t | 数值组ID |
ino_t | i节点编号 |
mode_t | 文件类型,文件创建模式 |
nlink_t | 目录项的链接计数 |
off_t | 文件大小和偏移量(带符号的) |
pid_t | 进程ID和进程组ID(带符号的) |
ptrdiff_t | 两个指针相减的结果(带符号的) |
rlim_t | 资源限制 |
sig_atomic_t | 能原子地访问的数据类型 |
sigset_t | 信号集 |
size_t | 对象(例如字符串)大小(不带符号的) |
ssize_t | 返回字节数的函数(带符号的)(read、write) |
time_t | 日历时间的秒计数器 |
uid_t | 数值用户ID |
wchar_t | 能表示所有不同的字符码 |
用这种方式定义了这些数据类型后,就不再需要考虑因系统而异的程序实现细节。
本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。