posix是什么

什么是POSIX ,为什么重要? 这是您在技术写作中可能会看到的一个术语,但是它经常在技术创新主义和行话终结于X的海洋中迷失。 我通过电子邮件发送了Richard Stallman博士(在黑客界更名为RMS),以了解有关该术语起源和背后含义的更多信息。

理查德·斯托曼(Richard Stallman)表示,“打开”和“关闭”是对软件进行分类的错误方法。 Stallman将程序分类为尊重自由 (“自由”或“自由”)和践踏自由 (“非自由”或“专有”)。 开源话语通常是出于实际利益的目的鼓励某些实践,而不是出于道德要求。

斯托曼(Stallman)于1984年发起的自由软件运动说, 优势远不止于此。 计算机用户应该控制自己的计算,因此拒绝用户控制的程序是不公正的,应予以拒绝和消除。 为了使用户能够控制,该程序必须赋予他们四个基本的自由 :

  • 出于任何目的自由运行程序的自由(自由0)。
  • 可以自由学习程序的工作方式并进行更改,以便按您的意愿进行计算(自由1)。 前提条件是访问源代码。
  • 重新分发副本的自由,以便您可以帮助他人(自由2)。
  • 将修改版本的副本分发给他人的自由(自由3)。 通过这样做,您可以使整个社区都有机会从您的更改中受益。 前提条件是访问源代码。

关于POSIX

赛斯(Seth): POSIX标准是IEEE发布的文档,描述了“便携式操作系统”。 只要开发人员编写与该描述相匹配的程序,他们就已经生成了POSIX兼容程序。 在技​​术行业中,我们简称为“规范”或“规范”。 就技术术语而言,这几乎是可以理解的,但是什么使操作系统“可移植”呢?

RMS:我认为接口应该是可移植的(在系统之间),而不是任何系统 。 实际上,内部不同的各种系统确实支持POSIX接口规范的某些部分。

塞思:因此,如果两个系统都具有POSIX兼容程序,则它们可以相互假设,从而使他们知道如何彼此“交谈”。 我读到的是,您想到了“ POSIX”这个名字。 您是如何提出该术语的?IEEE如何采用它?

RMS: IEEE已经完成了规范的制定,但没有简明的名称。 标题说的是“便携式操作系统接口”之类的内容,尽管我不记得确切的词。 该委员会以“ IEEEIX”作为简明名称。 我认为那不是一个好选择。 这听起来很丑陋,听起来像是恐怖的尖叫声“ Ayeee!”,所以我希望人们会把规范称为“ Unix”。

由于GNU的不是Unix ,并且它旨在替代Unix,所以我不希望人们将GNU称为“ Unix系统”。 因此,我提出了一个人们可以实际使用的简洁名称。 没有特别的启发,我以一种巧妙的方式产生了一个名字:我取了“便携式操作系统”的缩写,并添加了“ ix”。 IEEE急切地采用了这一方法。

赛斯(Seth): POSIX首字母缩略词中的“操作系统”仅指的是Unix和类似Unix的系统,例如GNU,还是打算包含所有操作系统?

RMS:摘要中的“操作系统”一词涵盖了一点都不像Unix的,完全不接近POSIX规范的系统。 但是,该规范适用于非常类似于Unix的系统。 仅此类系统符合POSIX规范。

赛斯:您是否参与审查或更新当前的POSIX标准?

RMS:现在不行。

赛斯(Seth): GNU Autotools信息链在很大程度上简化了应用程序的移植,至少在构建和安装的时间方面。 Autotools是构建便携式基础架构的重要组成部分吗?

RMS:是的,因为即使在遵循POSIX的系统之间,也存在许多小的差异。 自动工具使程序更容易适应这些差异。 顺便说一下,如果有人想帮助开发Autotools,请给我发电子邮件。

塞思:我想,可以回想起GNU刚开始使人们意识到从专有技术中解放出来的(非)Unix是可能的,但对于自由软件如何协同工作肯定还不够清楚。

RMS:我认为没有任何空白或不确定性。 我只是要遵循BSD的界面。

赛斯(Seth):某些GNU应用程序符合POSIX,而另一些具有POSIX规范中未包含的GNU特定功能或缺少该规范所需的功能。 POSIX遵从性对GNU应用程序有多重要?

RMS:遵循标准对于服务用户至关重要。 我们不是将标准视为权威,而是作为可能有用的指南。 因此,我们谈论的是遵循标准,而不是“遵循”这些标准。 请参阅GNU编码标准中的非GNU标准部分。

我们努力在大多数问题上与标准兼容,因为在大多数问题上,这为用户提供了最佳服务。 但是偶尔也有例外。

例如,POSIX指定某些实用程序以512字节为单位测量磁盘空间。 我要求委员会将其更改为1K,但它拒绝了,说是一个官僚规则迫使选择512。我不记得有太多试图说服用户对此决定感到满意的尝试。

由于用户自由之后,GNU的第二优先权是用户自由,因此我们使GNU程序默认以1K的块来测量磁盘空间。

但是,为了抵御竞争对手的潜在攻击,这些攻击者可能声称此偏差使GNU“不合规”,我们实施了可选模式,这些模式遵循POSIX和ISO C达到了荒谬的极端。 对于POSIX,设置环境变量POSIXLY_CORRECT将使POSIX指定的程序以512字节的形式列出磁盘空间。 如果有人知道实际使用POSIXLY_CORRECT或它的GCC副本--pedantic可以为某些用户带来实际好处的情况,请告诉我。

赛斯:兼容POSIX的自由软件项目是否更容易移植到其他类似Unix的系统?

RMS:我想是的,但是我在1980年代决定不花时间将软件移植到GNU以外的系统上。 我专注于推进GNU系统,使其不再需要使用任何非自由软件,而将GNU程序的移植工作移交给了非GNU样系统,而那些希望在这些系统上运行它们的人就应该放弃。

赛斯: POSIX对软件自由性很重要吗?

RMS:从根本上讲,没有区别。 但是,POSIX和ISO C的标准化无疑使GNU系统更易于迁移,这帮助我们更快地朝着从非自由软件中解放用户的目标前进。 这是在1990年代初实现的,当时Linux成为免费软件,然后填补了GNU中内核般的空白。

POSIX采用的GNU创新

我还问Stallman博士,是否以后有任何特定于GNU的创新或约定被采纳为POSIX标准。 他不记得具体的例子,但是我代表我发了电子邮件给几个开发人员。

开发人员Giacomo Catenazzi,James Youngman,Eric Blake,Arnold Robbins和Joshua Judson Rosen都回想起以前POSIX迭代以及仍在进行中的迭代的回忆。 POSIX是一个“活着的”标准,因此行业专家不断对其进行更新和审查,并且许多从事GNU项目的开发人员都建议包含GNU功能。

为了历史的利益,这里介绍了一些流行的GNU功能,这些功能已进入POSIX。

使

一些GNU Make功能已被POSIX的make定义所采用。 相关规范为从现有实现中借用的功能提供了详细的归属。

差异和补丁

diffpatch命令都直接从这些工具的GNU版本中添加了-u-U选项。

C库

GNU C库glibc的许多功能已在POSIX中采用。 血统有时很难追踪,但詹姆斯·扬曼写道:

“我很确定GCC率先推出了ISO C的许多功能。例如, _Noreturn是C11中的新功能,但是GCC-1.35具有此功能(一个在函数声明中使用了volatile修饰符。) “尽管我不确定,但GCC-1.35支持的可变长度数组似乎与现代C的一致性数组非常相似。”

Giacomo Catenazzi引用了Open Group的strftime文章 ,并指出了这种归属:“这是基于GNU libc的某些版本的strftime()中的功能 。”

埃里克·布雷克 Eric Blake)指出, getline()和各种基于* _l()语言环境的函数肯定是GNU率先开发的。

Joshua Judson Rosen补充说,他清楚地记得在目睹了完全针对不同OS的代码中出现的奇怪的类似于GNU的行为之后, getline函数的使用给他留下了深刻的印象。

“等等……那是GNU特有的……不是吗?哦,显然不再了。”

罗森(Rosen)指向我进入了getline手册页 ,其中:

getline()getdelim()最初都是GNU扩展。 它们在POSIX.1-2008中进行了标准化。

埃里克·布莱克(Eric Blake)向我发送了其他扩展的列表,这些扩展可以在下一个POSIX修订版(代号为Issue 8,当前于2021年左右发布)中添加:

  • ppoll
  • pthread_cond_clockwait等。
  • posix_spawn_file_actions_addchdir
  • getlocalename_1
  • 重新分配数组

用户空间扩展

POSIX不仅为开发人员定义了功能。 它还定义了用户空间的标准行为。

ls

-A选项用于排除 (表示当前位置)和.. (表示返回一个目录的机会)符号来自ls命令的结果。 POSIX 2008采用了此方法。

find命令是特设一个有用的工具, 用于循环和作为一个网关到并行处理。

从GNU到POSIX的一些便利,包括-path-perm选项。

-path选项使您可以过滤与文件系统路径模式匹配的搜索结果,自1996年前以来,它在GNU版本的find中可用(最早的记录在findutil的Git存储库中)。 詹姆斯·扬曼(James Youngman)指出, HP-UX也很早就具有此选项,因此不确定是GNU还是HP-UX创新(或两者)。

-perm选项使您可以按文件许可权过滤搜索结果。 这是到1996年GNU的find版本,后来又出现在POSIX标准“ IEEE Std 1003.1,2004 Edition”中。

xargs命令是findutils软件包的一部分,它具有-p选项,用于在1996年前将xargs置于交互模式(提示用户是否继续),它以“ IEEE Std 1003.1,2004 Edition”的形式到达POSIX。 ”

Awk

GNU awk/ usr / bin目录中的gawk命令,可能是symlink awk的目标)的维护者Arnold Robbins说, gawkmawk (另一个GPL awk实现)允许RS成为正则表达式,这是RS的长度大于1的情况。这不是POSIX的功能,但是有迹象表明它将是 :

NUL在扩展的正则表达式中产生的未定义行为允许将来对GNU gawk程序进行扩展以处理二进制数据。

使用多字符RS值导致的未指定行为是允许将来基于用于记录分隔符的扩展正则表达式进行扩展。 历史实现采用字符串的第一个字符,而忽略其他字符。

这是一项重要的改进,因为RS标记定义了记录之间的分隔符。 它可能是逗号,分号,破折号或任何此类字符,但如果是字符序列 ,则除非使用gawkmawk,否则仅使用第一个字符。 想象一下,解析一个IP地址的文档,并用省略号(连续三个点)分隔记录,然后获取解析在每个IP地址中每个点的结果。

Mawk首先支持该功能,但几年来一直没有维护者,这让gawk随身携带了火炬。 ( 此后,Mawk获得了新的维护者,因此可以肯定地说,可以将此功能推入集体期望中。)

POSIX规范

总的来说,Giacomo Catenzzi指出:“……因为使用了GNU实用程序太多,所以许多其他选项和行为都得到了统一。在shell的每次更改中,Bash都用作比较(作为一等公民)。” 将某些内容纳入POSIX规范时,无需引用GNU或任何其他影响,并且可以安全地假定对POSIX的影响来自许多来源,而GNU只是众多来源中的一种。

POSIX的意义是共识。 一群致力于共同规范的技术人员将由数百个不常见的开发人员共享,这有助于朝着软件独立性以及开发人员和用户自由的更大方向发展。

翻译自: https://opensource.com/article/19/7/what-posix-richard-stallman-explains

posix是什么

posix是什么_什么是POSIX? 理查德·斯托曼(Richard Stallman)解释相关推荐

  1. 【转】POSIX 是什么?让我们听听 Richard Stallman 的诠释 | Linux 中国

    译/Martin♡Adele Linux 从计算机自由先驱的口中探寻操作系统兼容性标准背后的本质.-- Seth Kenlon https://mp.weixin.qq.com/s/yAtRWfk6L ...

  2. POSIX 是什么?让我们听听 Richard Stallman 的诠释

    POSIX 是什么?为什么如此重要?你可能在很多的技术类文章中看到这个术语,但往往会在探寻其本质时迷失在 技术初始主义(techno-initialisms)的海洋或是 以 X 结尾的行话(jargo ...

  3. 转:比尔·盖茨和理查德·斯托曼

    原文地址:http://www.ruanyifeng.com/blog/2005/03/post_112.html 作者: 阮一峰 日期: 2005年3月31日 比尔·盖茨,微软公司的创始人,软件版权 ...

  4. 比尔·盖茨和理查德·斯托曼

    比尔·盖茨,微软公司的创始人,软件版权制度的受益者,世界头号富翁. 理查德·斯托曼,自由软件基金会的创始人,自由软件运动的领袖. 他们两个人,一个疾呼保护版权,打击盗版:另一个提倡自由复制,源码共享. ...

  5. 理查德·斯托曼一直是对的

    这些对公民自由的侵犯,不禁让人联想到,30年前的1983年,有一个叫做理查德·斯托曼的程序员,声称"软件的自由,关系到人类的自由".这个观点当时被认为荒唐偏激,但是现在来看,他担心 ...

  6. [并发并行]_[线程池]_[Programming With POSIX Threads的线程池实现分析1]

    场景 1.C++标准库没有提供线程池操作, 连Win32都没有集成线程池, 相比之下macOS完善多了, 至少有operations. 多线程在执行多任务时有很大优势, 比如同时管理多个设备, 多个s ...

  7. POSIX多线程程序设计_流水线工作例程

    #include<pthread.h> #include "errors.h"typedef struct stage_tag{<span style=" ...

  8. posix自定义消息队列_消息队列开源框架,基于Io,节约服务器资源

    dophon框架中的消息队列模块,包括本地消息中心,远程消息中心,以及生产消费相关装饰器以及内部操作模块等 dophon-mq 项目介绍 dophon框架中的消息队列模块,包括本地消息中心,远程消息中 ...

  9. linux网络编程之posix 线程(四):posix 条件变量与互斥锁 示例生产者--消费者问题

    http://blog.csdn.net/jnu_simba/article/details/9129939 一.posix 条件变量 一种线程间同步的情形:线程A需要等某个条件成立才能继续往下执行, ...

最新文章

  1. android编程fragment,Android中关于FragmentA嵌套FragmentB的问题
  2. TOPSIS(逼近理想解)算法原理详解与代码实现
  3. alias怎么每次登陆都保存_alias命令使用说明
  4. SAP Spartacus B2B table的配置信息的merge原理
  5. HDU 1874 最直接的最短路径问题
  6. EMR on ACK 全新发布,助力企业高效构建大数据平台
  7. 高精除(信息学奥赛一本通-T1308)
  8. python解析pdf得到每个字符的坐标
  9. Intent 隐示意图
  10. 大数据之-Hadoop3.x_MapReduce_HashPartitioner分区---大数据之hadoop3.x工作笔记0111
  11. python中for循环和while循环else语句的执行过程和陷阱
  12. mysql导入数据库没创建表_mysqldump不会创建表或导入任何数据
  13. 切图具体需要切什么内容_网页制作中的切图是什么?什么是切图
  14. 4.计算机网络 -- 4.6 综合布线
  15. 微软C/C++编译器选项
  16. 汉化+破解Substance Painter 2019 macv2019.1.0图文展示
  17. formal Verification 形式验证 形式验证的最大障碍:误报(false positives)的危险 第9章
  18. 互联网项目团队成员及能力组成的金字塔和倒金字塔模型
  19. JavaScript获得字符串实际长度
  20. 通过炒股实现财务自由的人,都做对了什么?

热门文章

  1. 机器学习经典算法笔记——梯度下降算法
  2. 吉林大学计算机高级程序设计笔记
  3. EasyUI——DataGrid中嵌入Radio
  4. 4个数字,如何最快找到最小的2个数
  5. Python电话本系统(添加、修改、删除、查询)
  6. mysql iso 时间_mysql 中 时间和日期函数
  7. 写代码也有“套路”-谈谈设计模式
  8. spring配置日志
  9. 转 测试linux中expect的timeout参数的作用
  10. 临沂经济技术开发区 智慧让城市建设更美好