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 和工具标准。这两个标准是通常提到的标准。POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX 是为了读音更 像 UNIX)。电气和电子工程师协会(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)。
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 能表示所有不同的字符吗
UNIX标准的更多相关文章
- UNIX标准及实现
UNIX标准及实现 引言 在UNIX编程环境和C程序设计语言的标准化方面已经做了很多工作.虽然UNIX应用程序在不同的UNIX操作系统版本之间进行移植相当容易,但是20世纪80年代UNIX版本 ...
- linux文件锁的应用,POSIX,unix标准,linux标准
1. perl,flock加锁.java也能加锁. 2. 先创建文件并打开,才能加锁(写打开?). 3. 可以用于判断进程是否一直在运行(用另一进程判断),如果锁一直在,则进程在:锁不在,则原进程或意 ...
- UNIX环境高级编程 第2章 UNIX标准及实现
在过去的将近25年时间,人们为了UNIX的标准化做出了种种努力,这使得程序在不同版本的UNIX系统之间的移植相当容易. ISO C 1989年,C语言首个标准得到批准,其为C89.次年,一个带有小改动 ...
- UNIX标准C - socket套接字
一.计算机网络 1.计算机网络的功能 a.数据通信 b.资源共享 c.提高系统的可靠性 d.分布式网络处理和负载均匀. 2.计算机网络的组成 1.通信子网:由网卡.线缆.集线器.中继器.交换器.路由器 ...
- UNIX标准C - 进程之间的通信
一.基本概念 进程间通信IPC:进程之间交换数据的过程叫进程间通信 进程间同性的方式: 简单的进程间的通信: 命令行:父进程通过exec函数创建子进程是可以附加一些数据 环境变量表:父进程通过exec ...
- 《UNIX环境高级编程》笔记——2.标准和实现
随着UNIX各种衍生版本不断发展壮大,标准化工作就十分必要.其实干啥事都是这样,玩的人多了,必须进行标准化. 一.UNIX标准 1.1 ISO C(ANSI C) ANSI:Amerocan Nato ...
- 【笔记】Unix 平台标准
POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEE ...
- UNIX环境高级编程——标准I/O库函数和Unbuffered I/O函数
以写文件为例,C标准I/O库函数(printf(3) .putchar(3) .fputs(3) )与系统调用write(2) 的关 系如下图所示. 库函数与系统调用的层次关系 open .read ...
- C标准I/O库函数与Unbuffered I/O函数
一.C标准I/O库函数.Unbuffered I/O函数 1. C标准I/O库函数是如何用系统调用的 fopen(3) 调用open(2)打开制定的文件,返回一个文件描述符(一个int类型的编号),分 ...
随机推荐
- webpack入门与解析(一)
每次学新东西总感觉自己是不是变笨了,看了几个博客,试着试着就跑不下去,无奈只有去看官方文档. webpack是基于node的.先安装最新的node. 1.初始化 安装node后,新建一个目录,比如ht ...
- JAVA集合一之集合简介(Collection,List,Set)
在编写JAVA程序中,我们经常会遇到需要保存一组数据对象,此时,我们可以采用对象数组来进行多个对象的保存,但对象数组存在一个最大的问题即在于长度上的限制,如果说我们现在要保存一组对象,但是我们并知道数 ...
- 启动APEX
-- 查看数据库参数 SQL> select * from nls_database_parameters; -- 查看数据库基本信息 SQL> select * from v$da ...
- Docker存储驱动之Btrfs简介
简介 Btrfs是下一代的copy-on-write文件系统,它支持很多高级特性,使其更加适合Docker.Btrfs合并在内核主线中,并且它的on-disk-format也逐渐稳定了.不过,它的很多 ...
- h5标签基础 meta标签
<meta>标签位于<head>标签里面,具体作用有如下: 1.设置网页编码 eg: <meta charset="utf-8"/> ,//u ...
- Hibernate二级缓存原理
缓存:缓存是什么,解决什么问题? 位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为缓存Cache.缓存目的:让数据更接近于应用程序,协调速度不匹配,使访问速度更快 ...
- 3223: Tyvj 1729 文艺平衡树
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1347 Solved: 724[Submit][Stat ...
- ehcache memcache redis 区别
之前用过redis 和 memcache ,没有ehcache 的开发经验,最近也查阅不少文档和博客,写一些总结,也有不少内容总结与诸多博客中的博主总结: Ehcache EhCache 是一个纯J ...
- SignalR指定用户推送消息
一.首先,在MVC项目中安装SingalR包(SingalR2.0需要.net4.5以上,VS2010可以安装1.1.3版本,本例为VS2010+SignalR1.1.3). 打开工具-NuGet程序 ...
- C++STL的简单使用
#include <iostream>#include <vector>#include<deque>#include <list>#include&l ...