2]MAX连同
PIPE[CD#*2]BUF。
6编辑时符号常数:
[CD#*2]POSIX[CD#*2]SAVED[CD#*2]IDS,[CD#*2]POSIX[CD#*2]VERSION连同
[CD#*2]POSIX[CD#*2]JOB[CD#*2]CONTROL。
7执行时符号常数:
[CD#*2]POSIX[CD#*2]NO[CD#*2]TRONC,[CD#*2]POSIX[CD#*2]VDISABLE连同[CD#*2
]POSIX[CD
#*2]CHOWN[CD#*2]RESTRICTED。
8不再使用的常数:CLK[CD#*2]TCK。
在这33个限制和常数中,15个总是定义的,其余的则按具体条件可定义可不定义。
在254中在说明sysconf,pathconf和fpatheonf函数时说明可定义可不定义的限
制和常数
(第4-8条)。在图27中我们摘录了任何限制和常数。13个不变最小值则示于图2
3中。
图23〓<limitsh>中的POSIX1不变最小值
这些值是不变的〖CD2〗他们并不附系统而改变。他们指定了这些特征方面的最严
格的值。
一个符合POSIX1的实现应当提供至少这样大的值。这就是为什么将他们称为最小
的原因,
虽然他们的名字都包含了MAX。另外,一个可移植的应用程式不应需要更大的值。
我们将在
本书的适当部分说明这些这些常数中每一个的含意。
不幸的是,这些不变最小值中的某一些在实际应用中是太小了。例如,现时的Uni
x系统所提
供的每个进程可同时打开文档数远超过16,即使是1978年的Version 7也向每个进
程提供了2
0个打开文档。另外,[CD#*2]POSIX[CD#*2]PATH[CD#*2]MAX的最小值限制255也是
太小了,
路径名可能会超过这一限制。这意味着我们在编辑时不能使用这两个常数[CD#*2]
POSIX[CD#
*2]OPEN[CD#*2]MAX和[CD#*2]POSIX[CD#*2]PATH[CD#*2]MAX作为数组长度。
图23中的13个不变最小值的每一个都有一个相关的实现值,其名字是将图23中
的名字删
除前缀[CD#*2]POSIX[CD#*2]后构成的。(这13个实现值是我们在本节开始部分所列
出的2-5
项:不变值、运行时不能增加的值、运行时不变的值、连同路径名可变值。)问题
是并不保
证任何这13个实现值定义在<limith>头文档中。一个特定值可能不定义在此头文
件中的理
由是:例如对一个给定进程的实际值可能依赖于系统的存储器总量。假如没有在头
文档中定
义他们,则我们就不能在编辑时使用他们作为数组边界。所以,POSIX1决定提供
三个运行
时函数供我们调用,他们是:syseonf,pathconf连同fpathconf,用他们能够在运
行时得到
实际的实现值。但是,更有一个问题,因为其中某些值是由POSIX1定义为"可能
不确定的
"(逻辑上无限的),这就意味着该值没有实际上限。例如,SVR4的每个进程打开文
件数限制
在假想上是无限的,所以在SVR4中OPEN[CD#*2]MAX被认为是不确定的。在257
中我们还
将讨论运行时不确定限制的问题。
253〓XPG3限制
XPG3定义了七个常数,他们总是包含在<limitsh>头文档中。POSIX1则会把他
们称之为
不变最小值。他们列于图24中。这些值的大多数都涉及消息。
图24〓XPG3不变最小值(在<limitsh>中)
XPG3也定义了值PASS[CD#*2]MAX,作为口令字中的最大有效字符数(不包括终止字
符null),
他可能包含在<limitsh>中。POSIX1则把他称之为运行时不变的值(可能不确定
),其最
小
可接受的值是8。PASS[CD#*2]MAX值也可在运行时用sysconf函数取得,该函数将在
254
中说明。
254〓sysconf、pathconf连同fpathconf函数
我们已列出了一个实现必须支持的各种最小值,但是怎样才能找到一个特定系统实
际支持的
限制值呢?正如我们在前面提到的,某些限制值在编辑时是可用的,而另外一些则
必须在运
行时确定。我们也曾提及在一个给定的系统中某些限制值是不会更改的,而其他则
和文档和
目录相关联。运行时限制是由调用下面三个函数中的一个而取得的。
#include <unistdh>
long sysconf(int [WTBX]name[WTBZ]);
log pathconf(const char *[WTBX]pathname[WTBZ],int [WTBX]name[WTBZ]);
log fpathconf(int [WTBX]filedes[WTBZ],int [WTBX]name[WTBZ]);
All three return:corresponding value if OK,-1 on error (see later)
最后两个函数之间的差别是个用路径名作为其参数,另一个则取文档描述符作为
参数。
图25中列出了这三个函数所使用的name参数。以[CD#*2]SC[CD#*2]开始的常数用
作为sysc
onf的参数,而以[CD#*2]PC[CD#*2]开始的常数则作为pathconf或fpathconf的参数
。
对于pathconf的参数pathname,fpathconf的参数filedes有很多限制。假如不满足
其中任何
一个限制,则结果是未定义的。
1[CD#*2]PC[CD#*2]MAX[CD#*2]CANON,[CD#*2]PC[CD#*2]MAX[CD#*2]INPUT连同
[CD#*2]PC
[CD#*2]VDISABLE所涉及的文档必须是终端文档。
2[CD#*2]PC[CD#*2]LINK[CD#*2]MAX所涉及的文档能够是文档或目录。假如这是
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




