APUE第二章 Unix标准及实现

来源:互联网 发布:淘宝页头背景图素材 编辑:程序博客网 时间:2024/04/30 00:14

Unix标准化

ISO C

ISO定义C语言的标准,提供C程序的可移植性,使其能适应于除UNIX以外的操作系统。此标准不仅定义了C语言的语法和语义,还定义了其标准库,也就是该标准定义了24个C语言的头文件,例如stdio.h, math.h, stdlib.h都包含在这24个头文件中。

IEEE POSIX

POSIX(Portable Operating System Interface)指的是可移植操作系统接口。POSIX.1包含了ISO C的标准库函数。POSIX没有包括超级用户的概念,代之以规定某些操作需要“适当的优先权”。

Unix系统实现

SVR4

AT&T的Unix系统实验室的产品。

BSD1

Berkeley Software Distribution是有加州大学伯克利分销研究开发和分发的。最初的BSD系统包含了AT&T专有的源代码。

Linux

Linux是一种提供类似于Unix的操作系统,在GNU公用许可证指导下,Linux是免费使用的。Linux常常是支持较新硬件的第一个操作系统。

Mac OS X

Mac OS X的核心操作系统为Darwin,Mac OS X 10.5的Intel部分已经被验证为是一个Unix系统。

Solaris

Solaris是由sun公司(现为Oracle)开发的Unix系统版本,它基于SVR4。

标准和实现的关系

在上述五种类Unix系统中,只有Mac OS和Solaris 10能够称自己是一种Unix系统,但是这五种系统都能提供Unix编程环境。因为这五种系统在不同程度上符合POSIX标准,所以我们将重点关注POSIX.1标准所要求的功能。

限制

必需限制

(1)编译时限制(如短整型最大值是什么)
(2)运行时限制(如文件名最大多少个字符)
编译时限制可在头文件中定义,而运行时限制则要通过进程调用一个函数获得限制值。

提供的限制

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

ISO C限制

ISO C定义的所有编译时限制都列在头文件

POSIX限制

与基本POSIX.1接口有关的限制和常量分成下列7类:
(1)数值限制:LONG_BIT、SSIZE_MAX和WORD_BIT。
(2)最小值:25个最小可接受值。例如登录名的长度_POSIX_LOGIN_NAME_MAX为9,描述了遵循POSIX.1系统最小可接受的登录名为9。
(3)最大值:_POSIX_CLOCKRES_MIN。
(4)运行时可以增加的值:CHARCLASS_NAME_MAX等。
(5)运行时不变值(不确定值):例如exec函数族的参数最大长度。
(6)其他不变值:NL_ARGMAX、NL_MSGMAX等。
(7)路径可变值
在这些限制和变量中,某些可能定义在

函数sysconf、pathconf和fpathconf

#include <unistd.h>long sysconf(int name);long pathconf(const char *pathname, int name);long fpathconf(int fd, int name);//fd为文件描述符

不确定的运行时限制

如果有些限制值没有在头文件

路径名

很多程序需要为路径名分配存储区,一般来说在编译时就要为路径名分配存储区,而且不同程序使用不同的幻数,如256、512或标准I/O常量BUFSIZ。

最大打开文件数

支持Single Unix Specification中XSI扩展的系统提供了getrlimit(2)函数,它返回一个进程可以同时打开的描述符的最多个数。使用该函数,我们能够检测出对于进程能够打开的文件数实际上并没有设置上限。

原创粉丝点击