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

第二章 Unix标准化及实现

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


X1定义

,那么也可将源文档的第一行配置为:

#define [CD#*2]POSIX[CD#*2]SOURCE 1

另一个功能测试宏是:[CD#*2][CD#*2]STDC[CD#*2][CD#*2],他是由符合ANSI C标

准的编辑

程式自动定义的。这样就允许我们编写ANSI C编辑程式和非ANSI C编辑程式都能编

辑的程式

。例如,在一个头文档可能会是:

# ifdef [CD#*2]STDC[CD#*2]

void *myfunc(const char *,int);

#else

void *myfunc();

#endif

这样就能发挥ANSI C原型功能的长处,要注意在开始和结束处的两个连续的下划线

常常打印

成一个长下划线(如同上面一个样本源代码中相同)。

27〓基本系统数据类型

历史上,某些Unix变量已和某些C数据类型联系在一起,例如,主、次设备号在历

史上存放

在一个16位的短整型中,用8位表示主设备号,另外8位表示次设备号。但是,很多

较大的系

统需要用多于256个值来表示其设备号,于是,就需要有一种不同的技术。(确实,

SVR4用32

位表示设备号:14位用于主设备号,18位用于次设备号)。

头文档<sys/typesh>中定义了某些和实现有关的数据类型,他们被称之为基本系

统数据类

型。有很多这种数据类型定义在其他头文档中。在头文档中这些数据类型都是用C

的typedef

设施来定义的。他们绝大多数都以[CD#*2]t结尾。图28中列出了本书将使用的基

本系统数

据类型。

图28〓基本系统数据类型

用这种方式定义了这些数据类型后,我们在编辑时就不再需要考虑附系统不同而变

的实施细

节,在本书中涉及到这些数据类型处,我们会说明为什么使用他们。

28〓标准之间的冲突

就整体而言,这些不同的标准之间配合得是相当好的。但是我们也很关注他们之间

的差别,

特别是ANSIC标准和POSIX1之间的差别。(因为XPG3是个较尽的正在被修订的标

准,FIPS

则是个需要更严的POSIX1。)

ANSI C定义了函数clock,他返回进程使用的CPU时间量,返回值是clock[CD#*2]t

类型值。

为了将此值变换成以秒为单位,将其除以在<timeh>头文档中定义的CLOCKS[CD#

*2]PER[CD

#

*2]SEC。POSIX1定义了函数times,他返回其调用者及其任何终止子进程的CPU时

间连同时

钟时间,任何这些值都是clock[CD#*2]t类型值。IEEEStd、10031-1988将符号C

LK[CD#*2

]TCK定义为每秒滴答数,上述clock[CD#*2]t值都是以此度量的。而1990 POSIX

1标准中则

说明不再使用,CLK[CD#*2]TCK应当使用sysconf函数来获得每秒滴答数,并将其用

于times

函数的返回值。术语是同一个,每秒滴答数,但ANSI C和POSIX1的定义却不同。

这两个标

准也用同一数据类型(clock[CD#*2]t)来保存这些不同的值,这种差别能够在SVR4

中看到,

其中clock返回微秒数(CLOCK[CD#*2]PER[CD#*2]SEC是一百万),而CLK[CD#*2]TCK

通常是50

,60或100(和CPU类型有关)。

另一个可能产生冲突的区域是:在ANSI C标准说明函数时,ANSI C所说明的函数可

能会没有

考虑到POSIX1的某些需要。有些函数在POSIX环境下可能需要有一个和C环境下不

同的实现

,因为POSIX环境中有多个进程,而C语言环境则很少会考虑宿主操作系统。尽管如

此,很多

POSIX依从的系统为了兼容性的关系也实现ANSI C函数,signal函数就是个例子

。假如我

们在不了解的情况下使用了SVR4所提供的signal函数(希望编写可在ANSI C环境和

较早Unix

系统中运行的可兼容程式),那么他提供了和POSIX1 sigaction函数不同的语义

。在第十

章中我们会对signal函数作更多说明。



29〓摘要

在过去几年中,在Unix不同版本的标准经方面已有了很大进展。本章对三个主要

标准-AN

SI C、POSIX和XPG3-进行了说明,也分析了这些标准对本书主要关注的两个实现:

SVR4和4

3 BSD所产生的影响。这些标准都试图定义一些可能附实现而更改的参数,但是

我们已

看到这些限制是并不完善的。在本书中,我们会涉及任何这些限制和幻常数。

在本书最后的参数书目中,说明了如何订购这些标准的方法。[LM]

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!