版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jiutianmuzi/article/details/85993846
限制
unix系统实现定义了很多幻数和常量,其中有很多已被硬编码到程序中,或用特定的技术确定。
已下两种类型是必须的。
(1)编译时限制(例如,短整型的最大值是什么?)
(2)运行时限制(例如,文件名有多少个字符串?)
编译时限制可在头文件中定义。程序在编译时包含这些头文件。但是运行时限制则要求进程调用一个函数获取限制值。
某些限制在一个给定的实现中可能是固定的(因此可以静态地在一个头文件中定义),而在另一个实现中是变动的(需要有一个运行时函数调用)。
为了解决这类问题,提供了已下3中限制:
- 编译时限制(头文件)
- 与文件或目录无关的运行时限制(sysconf函数)
- 与文件或目录有关的运行时限制(pathconf和fpathconf函数)
标准定义的限制
ISO C限制:
ISO C定义的所有编译时限制都列在头文件<limits.h>中。
POSIX 限制:
限制和常量分成下列7类:
- 数值限制:LONG_BIT、SSIZE_MAX和WORD_BIT。
- 最小值:_POSIX_PIPE_BUF、 _POSIX_MAX_CANON等。
- 最大值:_POSIX_CLOCKRES_MIN。
- 运行时可以增加的值:CHARCLASS_NAME_MAX 、COLL_WEIGHTS_MAX 、LINE_MAX 、NGROUPS_MAX 和RE_DUP_MAX。
- 运行时不变值:
名称 | 说明 | 最小可接受值 |
---|---|---|
ARG_MAX | exec函数族的参数最大长度 | _POSIX_ARG_MAX |
ATEXIT_MAX | 可用 atexit函数登记的最大函数个数 | 32 |
CHILD_MAX | 每个实际用户ID的子进程最大个数 | _POSIX_CHILD_MAX |
DELAYTIMER_MAX | 定时器最大超限运行次数 | _POSIX_DELAYTIMER_MAX |
HOST_NAME_MAX | gethostname返回的主机名长度 | _POSIX_HOST_NAME_MAX |
LOGIN_NAME_MAX | 登录名最大长度 | _POSIX_LOGIN_NAME_MAX |
OPEN_MAX | 赋予新建文件描述符的最大值+1 | _POSIX_OPEN_MAX |
PAGESIZE | 系统内存页大小(以字节为单位) | POSIX |
RTSIG_MAX | 为应用程序预留的实时信号的最大个数 | _POSIX_RTSIG_MAX |
SEM_NSEMS_MAX | 一个进程可使用的信号量最大个数 | _POSIX_SEM_NSEMS_MAX |
SEM_VALUE_MAX | 信号量的最大值 | _POSIX_SEM_VALUE_MAX |
SIGQUEUE_MAX | 一个进程可排队信号的最大个数 | _POSIX_SIGQUEUE_MAX |
STREAM_MAX | 一个进程一次可打开的标准I/O流的最大个数 | _POSIX_STREAM_MAX |
SYMLOOP_MAX | 路径解析过程中可访问的符号链接数 | _POSIX_SYMLOOP_MAX |
TIMER_MAX | 一个进程的定时器最大个数 | _POSIX_TIMER_MAX |
TTY_NAME_MAX | 终端设备名长度,其中包括终止的null字节 | _POSIX_TTY_NAME_MAX |
TZNAME_MAX | 时区名的字节数 | _POSIX_TZNAME_MAX |
- 其他不变值:NL_ARGMAX、NL_MSGMAX 、NL_SETMAX 和NL_TEXTMAX。
- 路径名可变值:FILESIZEBITS、LINK_MAX 、MAX_CANON、MAX_INPUT 、NAME_MAX、 PATH_MAX、 PIPE_BUF 和 SYMLINK_MAX。
XSI 限制:
X/Open System Interfaces Extension, a supplementary specification to the Single UNIX Specification。Single UNIX Specification(SUS,单一UNIX规范)是POSIX.1标准的一个超集。
名称 | 说明 | 最小可接受值 | 典型值 |
---|---|---|---|
NL_LANGMAX | 在 LANG 环境变量中最大字节数 | 14 | 14 |
NZERO | 默认进程优先级 | 20 | 20 |
_XOPEN_IOV_MAX | readv或writev可使用的最多iovec结构个数 | 16 | 16 |
XOPEN_NAME_MAX | 文件名中的字节数 | 255 | 255 |
XOPEN_PATH_MAX | 路径名中的字节数 | 1024 | 1024 |