unix环境高级编程(第三版)-读书笔记2

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jiutianmuzi/article/details/85993846

限制

unix系统实现定义了很多幻数和常量,其中有很多已被硬编码到程序中,或用特定的技术确定。
已下两种类型是必须的。
(1)编译时限制(例如,短整型的最大值是什么?)
(2)运行时限制(例如,文件名有多少个字符串?)
编译时限制可在头文件中定义。程序在编译时包含这些头文件。但是运行时限制则要求进程调用一个函数获取限制值。
某些限制在一个给定的实现中可能是固定的(因此可以静态地在一个头文件中定义),而在另一个实现中是变动的(需要有一个运行时函数调用)。
为了解决这类问题,提供了已下3中限制:

  1. 编译时限制(头文件)
  2. 与文件或目录无关的运行时限制(sysconf函数)
  3. 与文件或目录有关的运行时限制(pathconf和fpathconf函数)

标准定义的限制

ISO C限制:
ISO C定义的所有编译时限制都列在头文件<limits.h>中。
POSIX 限制:
限制和常量分成下列7类:

  1. 数值限制:LONG_BIT、SSIZE_MAX和WORD_BIT。
  2. 最小值:_POSIX_PIPE_BUF、 _POSIX_MAX_CANON等。
  3. 最大值:_POSIX_CLOCKRES_MIN。
  4. 运行时可以增加的值:CHARCLASS_NAME_MAX 、COLL_WEIGHTS_MAX 、LINE_MAX 、NGROUPS_MAX 和RE_DUP_MAX。
  5. 运行时不变值:
名称 说明 最小可接受值
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
  1. 其他不变值:NL_ARGMAX、NL_MSGMAX 、NL_SETMAX 和NL_TEXTMAX。
  2. 路径名可变值: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

猜你喜欢

转载自blog.csdn.net/jiutianmuzi/article/details/85993846