Linux/Unix系统编程手册-笔记10.系统限制和选项
Contents
系统限制和选项在不同系统实现、不同的运行环境、不同的文件系统之间可能存在不同。
程序获取限制值有两种途径:
在编译程序时能获得一些限制和选项,例如int类型的最大值,可以在头文件中定义。
在程序运行时可能变化的限制和选项,可以通过sysconf()、pathconf()、fpathconf()函数在检查系统限制和选项。
系统限制
头文件limits.h中形如_POSIX_XXX_MAX为SUSv3标准所定义的的各类系统限制的最小值。每个限制有一个名称,形如XXX_MAX,该限制至少等同于标准所定义的值,即XXX_MAX >= _POSIX_XXX_MAX。
SUSv3将限制分为三类:运行时恒定值、路径名变量值和运行时可增加值。
运行时恒定值(可能不确定)
所谓运行时恒定值是指某一限制,若已然在limits.h文件中定义,则对于实现而言固定不变。然而该值可能是不确定的,因而在limits.h文件中会忽略对其定义。在这种情况下,即使limits.h文件中已定义,应用程序可以使用sysconf来获取运行时的值。路径名变量值
指与路径名(文件、目录、终端)相关的限制,应用程序可以通过pathconf()或fpathconf()来获取该值。运行时可增加值
运行时可增加值是指某一限制,相对于特定实现其值固定,且运行此实现的所有系统至少都应支持这一最小值。然而,特定系统在运行时可能会增加该值,应用程序可通过sysconf来获取系统所支持的实际值。
在运行时获取系统限制
|
|
参数name应为定义于<unistd.h>文件中的_SC_系列常量之一。
运行时获取和文件相关的限制
|
|
两个函数之间的区别在于其对于文件或目录的指定方式,参数name则是定义于<unistd.h>文件中的_PC_*常量之一。
系统选项
定义在unistd.h中:
- 值为-1, 表示实现不支持该选项。
- 值为0, 表示实现可能支持该选项。
- 值大于0, 表示实现支持该选项。