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

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年左右发布)中添加:

用户空间扩展

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是什么

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值