手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

第二章 Unix标准化及实现

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!


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个总是定义的,其余的则按具体条件可定义可不定义。



在254中在说明sysconf,pathconf和fpatheonf函数时说明可定义可不定义的限

制和常数

(第4-8条)。在图27中我们摘录了任何限制和常数。13个不变最小值则示于图2

3中。



图23〓<limitsh>中的POSIX1不变最小值

这些值是不变的〖CD2〗他们并不附系统而改变。他们指定了这些特征方面的最严

格的值。

一个符合POSIX1的实现应当提供至少这样大的值。这就是为什么将他们称为最小

的原因,

虽然他们的名字都包含了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作为数组长度。

图23中的13个不变最小值的每一个都有一个相关的实现值,其名字是将图23中

的名字删

除前缀[CD#*2]POSIX[CD#*2]后构成的。(这13个实现值是我们在本节开始部分所列

出的2-5

项:不变值、运行时不能增加的值、运行时不变的值、连同路径名可变值。)问题

是并不保

证任何这13个实现值定义在<limith>头文档中。一个特定值可能不定义在此头文

件中的理

由是:例如对一个给定进程的实际值可能依赖于系统的存储器总量。假如没有在头

文档中定

义他们,则我们就不能在编辑时使用他们作为数组边界。所以,POSIX1决定提供

三个运行

时函数供我们调用,他们是:syseonf,pathconf连同fpathconf,用他们能够在运

行时得到

实际的实现值。但是,更有一个问题,因为其中某些值是由POSIX1定义为"可能

不确定的

"(逻辑上无限的),这就意味着该值没有实际上限。例如,SVR4的每个进程打开文

件数限制

在假想上是无限的,所以在SVR4中OPEN[CD#*2]MAX被认为是不确定的。在257

中我们还

将讨论运行时不确定限制的问题。

253〓XPG3限制

XPG3定义了七个常数,他们总是包含在<limitsh>头文档中。POSIX1则会把他

们称之为

不变最小值。他们列于图24中。这些值的大多数都涉及消息。

图24〓XPG3不变最小值(在<limitsh>中)

XPG3也定义了值PASS[CD#*2]MAX,作为口令字中的最大有效字符数(不包括终止字

符null),

他可能包含在<limitsh>中。POSIX1则把他称之为运行时不变的值(可能不确定

),其最



可接受的值是8。PASS[CD#*2]MAX值也可在运行时用sysconf函数取得,该函数将在

254

中说明。



254〓sysconf、pathconf连同fpathconf函数

我们已列出了一个实现必须支持的各种最小值,但是怎样才能找到一个特定系统实

际支持的

限制值呢?正如我们在前面提到的,某些限制值在编辑时是可用的,而另外一些则

必须在运

行时确定。我们也曾提及在一个给定的系统中某些限制值是不会更改的,而其他则

和文档和

目录相关联。运行时限制是由调用下面三个函数中的一个而取得的。

#include <unistdh>

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)

最后两个函数之间的差别是个用路径名作为其参数,另一个则取文档描述符作为

参数。

图25中列出了这三个函数所使用的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
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!