POSIX, Bash, GPL etc
POSIX , SUS, XSI
Portable Operating System Interface
POSIX是给Unix/Linux系统使用的通用调用接口(SCI, System Call Interface),以期实现同一个程序不需要任何修改就可以实现在不同的Unix/Linux系统间的移植,windows 后来也做了一些工作来支持POSIX,比如windows NT 。POSIX.1 包含了ISO C的标准函数库两部分(C语言就是为了写Unix开发的语言),分为必须部分和可选部分,只有将这两部分全部实现的才能被称作Unix操作系统
ISO C VS POSIX C
- ISO C标准
1989年, C程序设计语言的ANSI标准得到批准,此标准被采纳为国际标准ISO/IEC 9899
1990年, 1990 ISO C标准的意图是提供C程序的可移植性,使其能够适合于大量不同的操作系统
1991年, ISO C标准被更新,并批准为iso/iec 9899:1999 , ISO C标准定义的头文件有24个 - IEEE POSIX 标准
POSIX的目的是提升应用程序在各种UNIX系统环境之间的可移植性
POSIX.1包含了ISO C标准函数库,同时包含两部分:必须部分和可选部分(X/Open系统接口(X/Open System Interface,XSI))。POSIX.1中的X/Open系统选项描述了可选的接口,只有遵循XSI实现的才能称为UNIX系统。
Single UNIX Specification(SUS)
SUS是POSIX.1标准的一个超集,它定义了一些附加结构扩展了POSIX.1规范提供的功能POSIX.1相当于是SUS 中基本规范部分。
总结: ISO C是POSIX的子集,POSIX是SUS的子集,SUS是POSIX的扩展,X/Open系统接口(XSI)是POSIX.1中的接口,描述了POSIX中的可选接口,只有遵循XSI的实现才能称为UNIX系统
ISO/IEC 9899:1990 (C89, C90).
The 15 standard headers in C89 are:
<assert.h> <ctype.h> <errno.h> <float.h> <limits.h> <locale.h>
<math.h> <setjmp.h> <signal.h> <stdarg.h> <stddef.h> <stdio.h>
<stdlib.h> <string.h> <time.h>
ISO/IEC 9899:1990/Amd.1:1995.
The 3 extra headers introduced in C94* (Amendment 1) are:
<iso646.h> <wchar.h> <wctype.h>
ISO/IEC 9899:1999 (C99).
The 6 extra headers in C99 are:
<complex.h> <fenv.h> <inttypes.h> <stdbool.h> <stdint.h> <tgmath.h>
ISO/IEC 9899:2011 (C11). The 5 extra headers in C2011 (for a total of 29) are:
<stdalign.h> <stdatomic.h> <stdnoreturn.h> <threads.h> <uchar.h>
ISO/IEC 9045:2008 (POSIX 2008, SUS)
POSIX.1 C99
…
POSIX.1 STANDARD
<arpa/inet.h> <dirent.h> <fcntl.h> <fnmatch.h> <glob.h> <grp.h>
<net/if.h> <netdb.h> <netinet/in.h> <netinet/tcp.h> <pwd.h> <regex.h>
<sys/mman.h> <sys/select.h> <sys/socket.h> <sys/stat.h> <sys/time.h> <sys/times.h>
<sys/types.h> <sys/un.h> <sys/utsname.h> <sys/wait.h> <tar.h> <termios.h>
<unistd.h> <utime.h> <wordexp.h>
POSIX.1 XSI
<cpio.h> <dlfcn.h> <fmtmsg.h> <ftw.h> <iconv.h> <langinfo.h>
<libgen.h> <monetary.h> <ndbm.h> <nl_types.h> <poll.h> <search.h>
<strings.h> <syslog.h> <sys/ipc.h> <sys/msg.h> <sys/resource.h><sys/sem.h>
<sys/shm.h> <sys/statvfs.h> <sys/time.h> <sys/ timeb.h> <sys/uio.h> <ucontext.h>
<ulimit.h> <utmpx.h>
POSIX.1 Asynchronous I/O:
<aio.h> <mqueue.h> <pthread.h> <sched.h> <semaphore.h> <spawn.h>
<stropts.h> <trace.h>
On some platforms, X/Open Curses requires another set of headers:
<varargs.h> <curses.h> <term.h> <uncntrl.h>
Q:遵循POSIX标准的OS是否具有完全相同系统调用函数原型???
A:支持POSIX标准的OS都提供一套符合POSIX标准的接口规范,即SUS(ANSI C+ POSIX.1+…)而不是相同的SCI
Bash
Bourn Again Shell
Shell就是包在操作系统外面的一个“壳”, 用于用户和系统间的交互,早期有各种shell,包括K shell,B shell, C shell,Bash就是大名鼎鼎的B shell升级版,所以叫Again, 当前安装一个Linux发行版默认的都是Bash
GNU
GNU‘s Not Unix
一个由开发者维护的自由软件社区,之所以强调 "is not Unix"是因为Linux操作系统是Unix-like, 但却是一个自由软件
Copyleft
相对于商业世界传统的“Copyright(版权)”, 它使任何人都可以复制,修改再发布任何一个自由软件,是开源世界的基础
GPL
General Public License
GNU发行的软件遵循的许可,
FHS
Filesystem Hierarchy Standard
一种定义目录属性的标准,定义出四种目录特征,sharable,unsharable,static,variable
GCC
GNU C Compiler, GNU Compiler Collection
gcc早期只是C语言的编译器,就是前面的缩写,后来逐渐也能编译其他语言(eg:cpp),所以就变成的后面的缩写。 gcc是Linux系统的缺省编译器
POSIX, Bash, GPL etc的更多相关文章
- Unix历史及相关概念回顾
欢迎来到Unix的世界 很多人都用了很多年的Unix(其实更熟悉的是叫Linux),也接触到Unix世界中的各种概念,比如GCC.GNU.BSD.POSIX.GPL等等,也大都知道一些传奇的如雷贯耳的 ...
- 使用sh-x调试shell脚本_转
参考:http://blog.chinaunix.net/uid-20564848-id-73502.html 1. 通过sh -x 脚本名 #显示脚本执行过程2.脚本里set -x选项,轻松跟踪调 ...
- Python虚拟环境安装virtualenv
解决了多个版本共存的问题 virtualenv 为每个不同项目提供一份 Python 安装.它并没有真正安装多个 Python 副本,但是它确实提供了一种巧妙的方式来让各项目环境保持独立. 安装vir ...
- python实战博客
2018-10-31 更新Logging日志记录以及异常捕获 感谢廖大教程.Python实战 直接在闲置的服务器上开发.阿里云Centos 6.8 64位. 1 搭建开发环境 Python 环境是Py ...
- 高级Bash脚本编程指南(27):文本处理命令(三)
高级Bash脚本编程指南(27):文本处理命令(三) 成于坚持,败于止步 处理文本和文本文件的命令 tr 字符转换过滤器. 必须使用引用或中括号, 这样做才是合理的. 引用可以阻止shell重新解释出 ...
- [Bash Shell] Shell学习笔记
1. Shell简介 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命 ...
- -bash: fork: retry: Resource temporarily unavailable
登陆不了服务器The server refused to start a shell. 登陆服务器后执行ls命令报错: 1 2 $ls -bash: fork: retry: Resource t ...
- bash 源码分析
下载解压 bash-3.2 编译bash export LFS=/my/soft/mylfs tar xvf $LFS/sources/bash-3.2.tar.gz -C $LFS/sources/ ...
- Bash 什么时候会给 HOME 赋初始值
今天无意发现下面这个表现: $ env -i bash -c cd bash: line 0: cd: HOME not set $ env -i bash -c 'echo $HOME' 这表明了 ...
随机推荐
- Java基础复习笔记系列 三
前几节都是基础中的基础,从第三讲的笔记开始,每次笔记针对Java的一个知识块儿. Java异常处理 1.什么是异常? 异常是指运行期出的错误.比如说:除以一个0:数组越界:读取的文件不存在. 异常处 ...
- Java面试总结系列之Collections.sort()
面试中被问到,集合类中的排序方法是怎么实现的?没有回答上来,故而总结如下:你知道么? 前提:在eclipse中对于自己的代码可以通过按住Ctrl的同时单击名称跳入相应源码中.但eclipse默认没有添 ...
- 【FOL】第九周
不知不觉又是三周过去了. 这几周忙了一下,其他时间全都在搞服务端,简直是酸爽的不行...不过还好出了些成果. 目前服务端有: 1.版本服务:游戏版本更新 2.账号服务:用户身份验证,返回各种连接(代理 ...
- JMeter专题系列(一)工具简单介绍
一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件, ...
- Entity Framework 笔记(一)
Entity Framework概述 EF是一个对象关系映射(ORM)框架,允许开发人员使用特定于域的对象关系型数据,开发人员通常不需要编写大量的数据访问代码.使用EF,开发者可以利用LINQ进行查询 ...
- css3加载ing动画
项目中ajax交互成功前总会需要给用户提醒,比如请稍候.正在加载中等等,那个等待的动图以前项目中用的是gif,在移动端画质很渣,有毛边,于是在新项目中用css3展示加载中的动画效果. function ...
- Spring(2) ------ 依赖注入
spring框架为我们提供了三种注入方式,分别是set注入,构造方法注入,接口注入. 1.set注入: 采用属性的set方法进行初始化,就成为set注入. 1)给普通字符类型赋值. public cl ...
- 简单代码在ABAP中实现声音的播放
这段代码的功能是在SAP里面实现声音的播放,可以用作程序提醒功能,和SAP里面’噹噹噹’那个声音的意思差不多.将来在项目中遇到客户想要SAP ABAP发出一点声音的时候就可以参考一下这个程序. REP ...
- Sap 常用Function 说明
函数名 描述 SD_VBAP_READ_WITH_VBELN 根据销售订单读取表vbap中的信息EDIT_LINES 把READ_TEXT返回的LINES中的行按照TDFORMAT=“*”重新组织VI ...
- 解决IIS进程回收后第一次访问慢的问题
IIS 有一种机制,默认会在IIS空闲一定时间段后,将应用程序池进行回收,这个时间段在IIS6中默认是20分钟,在IIS7中默认是1740分钟.两个配置都不合理,都会导致当应用程序池被回收后,第一次访 ...