APUE读书笔记2-UNIX标准及实现

本文最后更新于:2021年6月20日 下午

本章主要介绍UNIX系统及C语言的编程标准化工作,并说明UNIX的具体实现对各标准的支持及限制情况

UNIX标准

  1. ISO C标准的意图是提高C程序的可移植性,使其能适合于大量不同的操作系统。ISO C标准不仅定义了C程序设计语言的语法和语义,还定义了其标准库
  2. POSIX(Portable Operating System Interface):指的是可移植操作系统接口。该标准的目的是提升应用程序在各种UNIX系统环境之间的移植性。
  3. 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

限制

  1. UNIX系统实现定义了很多幻数和常量。为了提高UNIX系统的可移植性,UNIX系统的具体实现对这些幻数和常量有两种不同类型的限制:编译时限制和运行时限制。

  2. 编译时限制可在头文件中定义,程序在编译时包含这些头文件。而运行时限制则需要进程调用一个函数以获得限制值。

  3. ISO C定义的所有编译时限制都在头文件<limits.h>中定义。这些限制在一个给定的系统中并不会改变。

  4. POSIX中定义了很多涉及操作系统实现限制的常量。这些限制值和常量中,有些定义在<limits.h>中,其余的则按具体条件可定义、可不定义。

  5. 运行时限制值可以调用以下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

标准之间的冲突

  1. POSIX标准和ISO C标准之间存在着一些差别,主要包括:
    • 对同一数据类型的定义不同
    • 对函数定义的严格程度不同

APUE读书笔记2-UNIX标准及实现
http://yoursite.com/2021/06/04/APUE读书笔记2-UNIX标准及实现/
作者
BinGoo
发布于
2021年6月4日
许可协议