UNIX标准

背景

人们在UNIX编程环境和C 程序设计语言的标准化方面已经做了很多工作。虽然UNIX应用程序在不同的UNIX操作系统版本之间进行移植相当容易,但是2 0 世 纪 80年代UNIX版本种类

的剧增以及它们之间差别的扩大,导致很多大用户( 如美国政府)呼吁对其进行标准化。

对于我们程序员来说,了解基本的标准和背景是有必要,本文主要对ISO C    POSIX    Sigle UNIX Specification 3个标准进行说明

ISO C

1989年,c程序设计语言的ANSI的标准X3.159-1989得到批准。ISO C的标准诞生,ISOC的标准意图是提供C程序的可移植性,使他能适合于不同的操作系统,而不仅仅是UNIX系统。

1999 年C标准被更新,这也是我常常说c99标准,它显著改善进行数值处理的应用软件的支持,同时加入了restrict关键字,这个我们常用的 const volatile修饰意外的第三关键字。

restrict,C语言中的一种类型限定符(Type Qualifiers),用于告诉编译器,对象已经被指针所引用,不能通过除该指针外所有其他直接或间接的方式修改该对象的内容。(可以参考百度百科的例子)

2011年C标准再次更新,由于其他的一些标准没有完全更新,C99还是目前用的最广泛的标准。

ISO C库可分为24个区

以前一直纠结的bool型变量的头文件在stdbool.h,哈哈。ISO C的头文件依赖操作系统所配置的C的编译器版本的

IEEE POSIX

posix指的是可移植的操作系统接口(portable Operating System Interface)。例如我们在进行网络编程的时候使用的套接字就是符合POSIX标准的,不同的UNIX的系统的socket编程肯定是兼容的,对应其他的

符合POSIX标准的系统也是适用的。

该标准最初由 IEEE 开发的标准族,部分已经被 ISO 接受为国际标准。该标准的具体内容 见 1.1.3。POSIX.1 和 POSIX.2 分别定义了 POSIX 兼容操作系统的 C 语言系统接口 以及 shell 和工具标准。这两个标准是通常提到的标准。

电气和电子工程师协会(Institute of Electrical and Electronics Engineers,IEEE) 最初开发 POSIX 标准,是为了提高 UNIX 环境下应用程序的可移植性。

然而,POSIX 并不局限于 UNIX。 许多其它的操作系统,例如 DEC OpenVMS 和 Microsoft Windows NT,都支持 POSIX 标准,尤其是 IEEE Std. 1003.1-1990(1995 年修订)

POSIX.1,POSIX.1提供了源代码级别的 C 语言应用编程 接口(API)给操作系统的服务程序,例如读写文件。POSIX.1 已经被国际标准化组织(International Standards Organization,ISO)所接受,被命名为 ISO/IEC 9945-1:1990 标准。

图2-2 图2-3 图2-4总结了POSIX。1指定的必要的和可选的头文件

Single UNIX Specification

Single UNIX Specification ( 单一UNIX规范 ) 是一组用来定义可以称为"UNIX"的计算机操作系统的标准的集合。

Single UNIX Specification是基于IEEE(电气和电子工程师协会)和The Open Group的工作,由Austin Group发展和维护

Single UNIX Specification是POSIX.1标准的超集,定义了一些附加的接口,这些接口扩展了基本的POSIX.1规范的功能。相应的系统接口全集被称为X/Open系统接口(XSI,X/Open System Interface)。

XSI还定义了实现必须支持的POSIX.1的哪些可选部分才能认为是遵循XSI的。它们包括文件同步,存储映射文件,存储保护及线程接口。只有遵循XSI的实现才能称为UNIX操作系统。

UNIX基本数据类型

在头文件<sys/types,h>,这个非常重要,在我们编写Linux程序的时候会经常看到用到,掌握他们是基本的要求

1. clock_t  时钟滴答计数器在我的上一篇博客的进程时间就是用它保存的

2.comp_t 压缩时钟类型

3. dev_t 设备号

4. fd_set 文件描述符集

5. fpos_t 文件的位置

6. gid_t 组id

7. ino_t i节点编号(文件的i节点)

8.mode_t 文件的类型,文件创建的模式

9.nlink_t 目录项的连接计数

10.off_t 文件的偏移量

11. pid_t 进程id和进程组id

12 pthread_t 线程id

13 ptrdiff_t 2指针相减的结果

14 rlim_t 资源限制

15 sig_atomic_t 能原子性的访问的数据类型

16 sigset_t 信号集

17 size_t 长度个数无符号的

18 ssizet_t 长度有符号的

19 time_t 上一篇博客提到的日历时间

20 uid_t 用户id

21 wchar_t 能表示所有不同的字符吗

(2天一更新UNIX的环境编程)

时间: 2024-11-06 07:16:23

UNIX标准的相关文章

UNIX标准及实现

UNIX 标准 ISO C:意图是提供C程序的可移植性,使得它能够适合于大量不同的操作系统. 该标准不仅定义了C程序设计语言的语法和语义,还定义了标准库 POSIX(Portable Operating System Interface): 指的是可移植操作系统接口.该标准的目的是提升应用程序在各种UNIX系统环境之间的可移植性.它定义了"符合POSIX"的操作系统必须提供的各种服务. POSIX 包含了 ISO C 标准库函数 SUS(Single Unix Specificatio

Unix 标准I/O总结和与文件I/O的比较

我们可以将文件I/O视为系统调用,内核要执行I/O操作,这里涉及到页缓存(高速缓存区)的概念,文件I/O执不执行与缓存区有关. 而标准I/O是对系统I/O调用的封装,标准I/O也有缓存区.行缓存的概念.正是由于这二级的缓存模式.导致标准I/O的效率很低. 当打开一个流时,标准I/O函数fopen返回一个指向FILE对象的指针.该对象通常是一个结构,它包含了标准I/O库为管理该流所需的所有信息,包括:用于实际I/O的文件描述符.指向用于该缓冲区的指针.缓冲区的长度.当前在缓冲区的字符数以及出错标志

《UNIX环境高级编程(第3版)》

<UNIX环境高级编程(第3版)> 基本信息 原书名:Advanced Programming in the UNIX Environment (3rd Edition) (Addison-Wesley Professional Computing Series) 原出版社: Addison-Wesley Professional 作者: (美)W. Richard Stevens    Stephen A. Rago 译者: 戚正伟 张亚英 尤晋元 出版社:人民邮电出版社 ISBN:9787

Unix/Linux进程间通信(IPC) -- 概述

序 Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的.而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同.前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内:后者则跳过了该限制,形成了基于套接口(socket)的进程间通信机制.Linux则把两者继承了下来,如图示: 其中,最初Unix IPC包括:管道.FIFO

C标准I/O库函数与Unbuffered I/O函数

一.C标准I/O库函数.Unbuffered I/O函数 1. C标准I/O库函数是如何用系统调用的 fopen(3) 调用open(2)打开制定的文件,返回一个文件描述符(一个int类型的编号),分配一个FILE结构体,其中包含该文件的描述符.I/O缓冲区和当前读写位置等信息,返回这个FILE结构体的地址. fgetc(3) 通过传入的FILE *参数找到该文件的描述符.I/O缓冲区和当前读写位置,判断能否从I/O缓冲区读到下一个字符,如果能就直接返回该字符,否则调用read(2)把文件描述符

Unix网络编程学习日记 (2)

今天继续探索<Unix网络编程>的框架.并改善上次的程序 在第一次接触中,我将error.h头文件分出,但是发现错误检测和输出大量的存在,因此归入到common.h中. 加入了一些安全包装函数,就是对于原函数的调用并进行错误检查. 用新的函数改善了daytimecpcli,并学习服务器程序daytimetcpsrv的编写. 目录结构如下: 各个文件的作用为: common.h:公共头文件,包含一些常量的定义和函数的声明以及常用头文件 error.c:错误输出函数的定义 wrapsock.c:s

Linux/UNIX系统编程手册 PDF下载

网盘下载地址:Linux/UNIX系统编程手册 PDF下载 – 易分享电子书PDF资源网 作者: Michael Kerrisk 出版社: 人民邮电出版社 原作名: The Linux Programming Interface: A Linux and UNIX System Programming Handbook 译者: 孙剑 许从年 董健 / 孙余强 郭光伟 陈舸 出版年: 2014-1 页数: 1176 定价: 158 装帧: 平装 内容简介 · · · · · · <linux/un

Python标准库之logging模块

很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug().info().warning(). error() .critical() 5个级别. import logging logging.debug("debug message")logging.info("Input user/passwd&qu

Day5 - 常用模块学习

本节大纲: 模块介绍(模块导入方法) time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一堆代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又