2.2.1 ISO C
图2-1 ISO C标准定义的头文件
2.2.2 IEEE POSIX
头文件 | 说明 |
---|---|
<aio.h> | 异步I/O |
<cpio.h> | cpio归档值 |
<dirent.h> | 目录项 |
<dlfcn.h> | 动态链接 |
<fcntl.h> | 文件控制 |
<fnmath.h> | 文件名匹配类型 |
<glob.h> | 路径名模式匹配与生成 |
<grp.h> | 组文件 |
<iconv.h> | 代码集变换实用程序 |
<langinfo.h> | 语言信息常量 |
<monetary.h> | 货币类型与函数 |
<netdb.h> | 网络数据库操作 |
<nl_types.h> | 消息类 |
<poll.h> | 投票函数 |
<pthread.h> | 线程 |
<pwd.h> | 口令文件 |
<regex.h> | 正则表达式 |
<sched.h> | 执行调度 |
<semapohore.h> | 信号量 |
<strings.h> | 字符串操作 |
<tar.h> | tar归档值 |
<termios.h> | 终端I/O |
<unistd.h> | 符号常量 |
<wordexp.h> | 字扩充类型 |
<arpa/inet.h> | 因特网定义 |
<net/if.h> | 套接字本地接口 |
<netinet/in.h> | 因特网地址族 |
<netinet/tcp.h> | 传输控制协议定义 |
<sys/mman.h> | 存储管理声明 |
<sys/select.h> | select函数 |
<syd/socket.h> | 套接字接口 |
<sys/stat.h> | 文件状态 |
<sys/statvfs.h> | 文件系统信息 |
<sys/times.h> | 进程时间 |
<sys/types.h> | 基本系统数据类型 |
<sys/un.h> | UNIX域套接字定义 |
<sys/utsname.h> | 系统名 |
<sys/wait.h> | 进程控制 |
2.5.1 ISO C限制
所有编译时限制都定义在<limits.h>
,这些限制常量在一个给定系统中并不会改变.
比如:
名称 | 典型值 |
---|---|
CHAR_BIT | 8 |
CHAR_MIN | -128 |
CHAR_MAX | 127 |
INT_MIN | -2147483648 |
INT_MAX | 2147483647 |
MB_LEN_MAX 在一个多字节字符常量中的最大字节数 | 6 |
2.5.4 运行时限制
某些限制值可能会更改,因为它们与文件和目录相关联,必须在运行时确定.
#include <unistd.h>
long sysconf(int ,name);
long pathconf(const char *pathname, int name);
long fpathconf(int fd,int name);
图2-10 列出了sysconf
函数所使用的name
参数,它用于标识系统限制,以_SC_
开始的常量用作标识运行时限制的sysconf参数.
最后两个函数之间的差别是一个用路径名作为其参数,另一个则取文件描述符作为参数.
对于pathconf
的参数pathname
和fpathconf
的参数fd
有很多限制。如果不满足其中任一个限制,则结果是未定义的。
包括:
-
_PC_MAX_CANON
和_PC_MAX_INPUT
引用的文件必须是终端文件。 -
_PC_LINK_MAX
和_PC_TIMESTAMP_RESOLUTION
引用的文件可以是文件或目录。如果是目录,则返回值用于目录本身,而不用于目录内的文件名项。 -
_PC_NAME_MAX
引用的文件必须是目录,返回值用于该目录中的文件名 -
_PC_PATH_MAX
引用的文件必须是目录。当所指定的目录是工作目录时,返回的是相对路径名的最大长度(而我们大部分情况下想要的是绝对路径名的最大长度)
2.8 基本系统数据类型
头文件<sys/types.h>
中定义了一些和实现会用到的数据类型,他们被约定俗成,被称为基本系统数据类型,还有很多在其他头文件中,这些数据类型都是通过typedef方式来定义的。