cla*_*aws 822 unix linux posix terminology
什么是POSIX?我已阅读维基百科的文章,每次遇到这个词时我都会阅读它.事实是,我从来没有真正理解它是什么.
任何人都可以通过解释"对POSIX的需求"向我解释一下吗?
Ale*_*lli 572
POSIX是由IEEE指定的一系列标准,用于澄清和统一Unix-y操作系统提供的应用程序编程接口(以及辅助问题,如命令行shell实用程序).当您编写程序以依赖POSIX标准时,您可以非常肯定能够轻松地将它们移植到大量的Unix衍生产品系列中(包括Linux,但不仅限于它!); 如果你使用的某些Linux API没有标准化为Posix的一部分,那么如果你希望将来将该程序或库移植到其他Unix-y系统(例如MacOSX),你将会遇到更难的时间.
Cir*_*四事件 467
POSIX 7定义的最重要的东西
通过以下方式扩展ANSI C:
mkdir
,dirname
,symlink
,readlink
,link
(硬链接)poll()
,stat
,sync
,nftw()
fork
,execl
,wait
,semaphors pipe
,共享存储器(sem_*
), shm_*
,调度参数(kill
,nice
), ,,sched_*
sleep
mkfifo
setpgid()
socket()
,mmap
,mlock
,mprotect
,madvise
brk()
)这些API还确定了它们所依赖的底层系统概念,例如reg*
需要一个过程的概念.
很多Linux系统调用存在实现特定的POSIX C API函数使Linux兼容的,例如fork
,sys_write
,...许多这些系统调用的也有特定的Linux的扩展不过.
主要的Linux桌面实现:glibc,在很多情况下只是为系统调用提供浅层包装.
如:sys_read
,cd
,ls
,...
许多实用程序是用于相应C API函数的直接shell前端,例如echo
.
主要的Linux桌面实现:GNU Coreutils的为小的,独立的GNU项目为大的:mkdir
,sed
,grep
,...一些CLI工具类猛砸实现为内置插件.
例如, awk
主要的Linux桌面实现:GNU Bash.
例如:a=b; echo "$a"
,HOME
.
ANSI C表示,PATH
或PATH
成功,PATH
失败,并留下所定义的REST实现.
POSIX补充说:
0
:找到命令但不可执行.
EXIT_SUCCESS
: 没有找到指令.
EXIT_FAILURE
:由信号终止.
但是POSIX似乎没有指定126
Bash使用的规则:https://unix.stackexchange.com/questions/99112/default-exit-code-when-process-is-terminated
有两种类型:BRE(基本)和ERE(扩展).不推荐使用Basic,只保留不破坏API.
这些由C API函数实现,并在整个CLI实用程序中使用,例如127
,默认情况下接受BRE,以及使用ERE > 128
.
例如: 128 + SIGNAL_ID
主要的Linux实现:glibc在regex.h下实现了哪些程序grep
可以用作后端.
如:-E
,echo 'a.1' | grep -E 'a.[[:digit:]]'
Linux FHS极大地扩展了POSIX.
grep
是路径分隔符/dev/null
不能使用/tmp
是/
,NUL
父母.
另请参阅:文件系统的posix合规性是什么?
不是强制性的,由POSIX使用,但几乎没有其他地方,特别是在GNU中.但事实上,它限制性太强,例如单字母标志(例如cwd
),没有双连字符长版本(例如..
).
一些广泛使用的惯例:
a-zA-Z0-9._-
表示预期文件的stdin-a
终止标志,例如--all
列出名为的目录-
另请参阅:Linux命令行开关和参数是否有标准?
谁符合POSIX?
许多系统都严格遵循POSIX,但实际上很少有Open Group认证,它保持了标准.值得注意的认证包括:
大多数Linux发行版非常合规,但未经认证,因为他们不想支付合规性检查.浪潮的K-UX和华为的EulerOS是两个经过认证的例子.
官方认证系统列表可在以下网址找到:https://www.opengroup.org/openbrand/register/,也可在维基页面找到.
视窗
Windows在其某些专业发行版上实现了POSIX.
由于它是一个可选功能,程序员不能依赖它来支持大多数最终用户应用程序.
Windows 8中不支持支持:
2016年,宣布了一个名为"Linux子系统Linux"的新的类似Linux的官方API.它包括Linux系统调用,ELF运行,部分--
文件系统,Bash,GCC,(TODO可能是glibc?)ls -- -l
等等:https://channel9.msdn.com/Events/Build/2016/P488所以我相信它将允许Windows运行很多(如果不是全部)POSIX.但是,它专注于开发人员/部署而非最终用户.特别是,没有计划允许访问Windows GUI.
官方Microsoft POSIX兼容性的历史概述:http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/
Cygwin是一个众所周知的GPL第三方项目,为Windows"提供了大量的POSIX API功能",但要求您"从源代码重建应用程序,如果您希望它在Windows上运行".MSYS2是一个相关项目,似乎在Cygwin之上添加了更多功能.
Android的
Android拥有自己的C库(Bionic),它不支持Android O的POSIX:Android POSIX兼容吗?
奖金水平
在Linux标准基础进一步扩展POSIX.
使用非帧索引,它们更具可读性和可搜索性:http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html
获取用于grepping的HTML页面的完整压缩版本: POSIX C API函数列表在哪里?
cle*_*tus 69
POSIX是:
POSIX(发音为/pɒzɪks/)或"便携式操作系统接口[用于Unix]" 1是IEEE指定的一系列相关标准的名称,用于定义应用程序编程接口(API),以及用于软件的shell和实用程序接口虽然该标准适用于任何操作系统,但与Unix操作系统的变体兼容.
基本上,它是一组措施,通过(大多数)常见的API和实用程序来缓解开发和使用不同版本UNIX的痛苦.有限的POSIX合规性也扩展到各种版本的Windows.
Jim*_*nis 41
让我给出粗略的"非正式"解释.
POSIX是一组标准,它试图将"UNIX"和类UNIX系统与那些与它们不兼容的系统区分开来.它是由美国政府为采购目的而创建的.其想法是,美国联邦采购需要一种方法来合法地指定各种投标和合同的要求,其方式可以用于排除给定现有代码库或编程人员不可移植的系统.
由于POSIX是事后编写的......用于描述一组松散相似的竞争系统......它不是以可以实现的方式编写的.
因此,例如,Microsoft的NT编写时具有足够的POSIX一致性以符合某些出价......即使POSIX子系统在实际可移植性和与UNIX系统的兼容性方面基本上没用.
几十年来,已经编写了各种其他UNIX标准.诸如SPEC1170(指定了必须兼容的一百一十七个函数调用)和SUS(单一UNIX规范)的各种版本之类的东西.
在大多数情况下,这些"标准"不适用于任何实际的技术应用.它们最常用于论证,法律争论和其他功能失调的原因.
Jed*_*ith 29
POSIX是IEEE和The Open Group提出的一套标准,描述了理想的Unix如何运作.程序员,用户和管理员都可以熟悉POSIX文档,并期望POSIX投诉Unix提供所有提到的标准工具.
由于每个Unix的工作方式都有所不同 - Solaris,Mac OS X,IRIX,BSD和Linux都有它们的怪癖 - POSIX对业界人士特别有用,因为它定义了一个标准的操作环境.例如, C库中的大多数功能都基于POSIX; 因此,程序员可以在他的应用程序中使用一个程序员,并期望它在大多数Unices中表现相同.
然而,Unix的不同领域通常是焦点,而不是标准的.
关于POSIX的好处是欢迎您自己阅读:
问题7被称为POSIX.1-2008,并且有新的东西 - 但是,用于POSIX.1的Google-fu等可以让你看到Unix背后的整个历史.
Han*_*Gay 28
POSIX是操作系统的标准,应该可以更容易地编写跨平台软件.这在Unix世界中是一个特别重要的事情.
1985年,来自整个计算机行业公司的个人联合起来开发了POSIX(计算机环境的可移植操作系统接口)标准,该标准主要基于UNIX System V接口定义(SVID)和其他早期的标准化工作.这些努力是由美国政府推动的,美国政府需要一个标准的计算环境来最小化其培训和采购成本.POSIX于1988年发布,是一组IEEE标准,用于定义操作系统的API,shell和实用程序接口.虽然针对类UNIX系统,但标准可适用于任何兼容的操作系统.现在这些标准已经获得认可,软件开发人员能够开发在所有符合UNIX,Linux和其他操作系统版本上运行的应用程序.
从书中:Linux的实用指南
Posix 更像是一个操作系统,它是一个“操作系统标准”。你可以把它想象成一个虚构的操作系统,它实际上并不存在,但它有一个文档。这些论文是“posix 标准”,由美国最大的标准组织 IEEE 定义。实现此规范的操作系统是“符合 Posix 的”。
政府法规在其投资中更喜欢符合 Posix 的解决方案,因此符合 Posix 的解决方案具有显着的财务优势,特别是对于美国的大型 IT 公司。
操作系统完全符合 posix 的奖励,即保证它将无缝编译和运行所有符合 Posix 的应用程序。
Linux 是最著名的一种。OSX、Solaris、NetBSD 和 Windows NT 也可以在这里播放。Free- 和 OpenBSD 只是“几乎”符合 Posix 标准。WinNT 的 posix 合规性只是一种避免上述政府规定的伪解决方案。
归档时间: |
|
查看次数: |
286863 次 |
最近记录: |