APUE读书笔记2-UNIX标准及实现
本文最后更新于:2021年6月20日 下午
本章主要介绍UNIX系统及C语言的编程标准化工作,并说明UNIX的具体实现对各标准的支持及限制情况
UNIX标准
- ISO C标准的意图是提高C程序的可移植性,使其能适合于大量不同的操作系统。ISO C标准不仅定义了C程序设计语言的语法和语义,还定义了其标准库
- POSIX(Portable Operating System Interface):指的是可移植操作系统接口。该标准的目的是提升应用程序在各种UNIX系统环境之间的移植性。
- Single UNIX Specification(SUS,单一UNIX规范):是POSIX标准的超集,它定义了一些附加接口扩展了POSIX规范提供的功能。
UNIX系统实现
目前,主要的UNIX系统实现主要包括以下这些:
- SVR4(UNIX System Release 4)
- 4.4BSD(Berkeley Software Distribution)
- FreeBSD
- Linux
- Mac OS X
- Solaris
限制
UNIX系统实现定义了很多幻数和常量。为了提高UNIX系统的可移植性,UNIX系统的具体实现对这些幻数和常量有两种不同类型的限制:编译时限制和运行时限制。
编译时限制可在头文件中定义,程序在编译时包含这些头文件。而运行时限制则需要进程调用一个函数以获得限制值。
ISO C定义的所有编译时限制都在头文件<limits.h>中定义。这些限制在一个给定的系统中并不会改变。
POSIX中定义了很多涉及操作系统实现限制的常量。这些限制值和常量中,有些定义在<limits.h>中,其余的则按具体条件可定义、可不定义。
运行时限制值可以调用以下3个函数获取:
1
2
3
4#include <unistd.h>
long sysconf(int name);
long pathconf(const char *pathname, int name);
long fpathconf(int fd, int name);参数:
name:系统定义的限制名常量
pathname:文件名
fd:打开的文件描述符
返回值:
- 成功:返回对应的限制值
- 失败:返回-1
标准之间的冲突
- POSIX标准和ISO C标准之间存在着一些差别,主要包括:
- 对同一数据类型的定义不同
- 对函数定义的严格程度不同
APUE读书笔记2-UNIX标准及实现
http://yoursite.com/2021/06/04/APUE读书笔记2-UNIX标准及实现/