The Open Group是UNIX
商标的最著名的认证机构,它是UNIX单一技术规范的技术标准的发布,该技术标准扩展了POSIX标准,并且是UNIX系统的
官方定义。
如果UNIX系统的正式定义是POSIX的扩展,那么POSIX到底是什么? ,,,当然,这似乎是UNIX世界的试金石,但我不知道它如何适合整体情况。
#1 楼
POSIX首先是1988年的标准,远早于Single UNIX规范。这是统一所有各种UNIX fork和类似UNIX的系统的尝试之一。 POSIX是IEEE标准,但是由于IEEE不拥有UNIX®商标,因此该标准不是UNIX®,尽管它当时基于现有的UNIX API。第一个标准POSIX.1正式称为IEEE std 1003.1-1988。[1] IEEE收取了获取该标准副本的巨额费用。Open Group在1997年根据IEEE的POSIX标准的工作发布了Single UNIX规范(SUSv2)。 SUSv3于2001年由IEEE和The Open Group(称为Austin Group)之间的联合工作组发布。 SUSv3也称为POSIX:2001 [2]。现在还有POSIX:2004和POSIX:2008,它们是SUSv4的核心。至于UNIX®是什么,UNIX®就是目前的注册商标持有人所说的。自1994年以来,这就是The Open Group。
Novell从AT&T / USL收购了UNIX®系统业务,AT&T / USL正是UNIX®的诞生地。 1994年,他们将UNIX®商标的权利出售给了X / Open [3],现在称为The Open Group。然后,他们将UNIX®源代码作为UNIXWARE®出售给了SCO。[3] UNIX®本身已经分叉了很多次[4] [5],这部分是由于AT&T的许可模式。购买UNIX®为您提供了操作系统的完整资源以及构建它的完整工具链。拥有AT&TUNIX®许可证的任何人都可以分发和使用对源代码的修改。许可费成千上万。
BSD是Berkeley的一个项目,该项目对UNIX®操作系统进行了许多增强。 BSD代码是在比AT&T的源代码宽松得多的许可下发布的,并且不像GNU项目和Linux使用的GPL那样,不需要许可证费,甚至不需要与源代码一起分发。这导致BSD代码的很大一部分包含在各种商业UNIX分支中。大约在4.3BSD左右,他们几乎取代了对原始AT&TUNIX®源代码的任何需求。 FreeBSD / NetBSD / OpenBSD是4.3BSD的全部分支,它们是完整的操作系统,并且没有原始的AT&T源代码。他们也没有UNIX®商标的权利,但是他们的许多代码被商业UNIX操作系统使用。在UNIX上使用的Socket API是在BSD上开发的,并且借用了Unix Fast Filesystem代码并在各种UNIX操作系统(例如Solaris)上使用了它们自己的增强功能。
Linux于1991年开发,但从1991年开始开发不同于BSD,它使用了现有的GNU Project,它是大多数UNIX用户空间的无尘室实现。它实现了POSIX的大部分功能以实现兼容性,并且在设计上类似于UNIX,但是它与BSD所具有的AT&T或UNIX®并没有紧密的联系。
评论
一个很好的答案。所有(3)个答案都不错,但是这个答案非常有用(尤其是在另两个答案准备之后);正是我所需要的...谢谢(在问题正文下方)关于SUS的评论,我现在已经非常了解它了,谢谢...(而且我没有注意到这只是一个段落...太有趣的:)
– Peter.O
2011年4月26日在1:26
@Mikel希望我的编辑能有所帮助
–penguin359
2011年4月26日下午4:36
@ penguin359是一个很棒的答案!
– boehj
2011年4月28日在4:02
有人对X代表什么有个好主意吗?如果只是后缀,表示与Unix的关系,那不是小写吗?
– Alex W
15年8月24日在18:07
优秀的。谢谢。在过去的大部分时间里,我一直在从事计算工作,但是事情发生的“愚蠢”细节并不是我关注的重点。很高兴看到这条路。
–肯·英格拉姆
18-11-19在22:30
#2 楼
POSIX 7定义的最重要的内容C API
使用以下内容极大地扩展了ANSI C:
更多文件操作:
mkdir
,dirname
,symlink
,readlink
,link
(硬链接),poll()
,stat
,sync
,nftw()
进程和线程:
fork
,execl
,wait
,pipe
,sem_*
,shm_*
,kill
,nice
内存(sched_*
),sleep
,调度参数(mkfifo
,setpgid()
),socket()
,mmap
,mlock
联网:
mprotect
内存管理:
madvise
,brk()
,reg*
fork
实用程序:正则表达式(
sys_write
)这些API还可确定它们所依赖的基础系统概念,例如
sys_read
需要过程的概念。存在许多Linux系统调用,以实现特定的POSIX C API函数并使Linux兼容,例如
cd
,ls
... ...但是,许多这些系统调用也具有特定于Linux的扩展。主要的Linux桌面实现:glibc,在许多情况下,它们仅提供系统调用的浅层包装。 >
CLI实用工具
例如:
echo
,mkdir
,sed
,... 许多实用工具都是对应C API的直接外壳前端功能,例如
grep
。主要的Linux桌面实现:小型的GNU Coreutils,大型的GNU Coreutils:
awk
,a=b; echo "$a"
,HOME
... ...一些CLI实用程序由Bash内置实现。Shell语言
例如,
PATH
主要的Linux桌面实现:GNU Bash。
环境变量
例如:
PATH
,PATH
。0
搜索语义已指定,包括斜杠如何防止EXIT_SUCCESS
搜索。 程序退出状态
ANSI C将
EXIT_FAILURE
或126
表示为成功,将127
表示为失败,并保留其余实现的定义。POSIX添加:
> 128
:找到命令但不可执行。128 + SIGNAL_ID
:找不到命令。grep
:被信号终止。但是POSIX似乎没有指定Bash使用的
-E
规则:默认退出进程终止时的代码?正则表达式
有两种类型:BRE(基本)和ERE(扩展) 。不推荐使用Basic,并且仅保留不破坏API。
这些都是由C API函数实现的,并在整个CLI实用程序中使用,例如默认情况下,
echo 'a.1' | grep -E 'a.[[:digit:]]'
接受BRE,而grep
则接受ERE。例如:/dev/null
主要的Linux实现:glibc实现regex.h下的功能,
/tmp
之类的程序可以用作后端。 。目录结构
例如:
/
,NUL
Linux FHS大大扩展了POSIX。
文件名
.
是路径分隔符cwd
不能使用..
是a-zA-Z0-9._-
,-a
父级便携式文件名
最多使用14个字符和256个完整路径
只能包含:
--all
另请参见:https://stackoverflow.com/questions/18550253/what-is-posix-compliance-for-filesystem
命令行实用程序API约定
不是强制性的,由POSIX使用,但是几乎没有其他地方,尤其是在GNU中。但确实如此,它过于严格,例如仅单字母标志(例如
-
),没有双连字符长版本(例如--
)。一些广泛使用的约定:
ls -- -l
表示标准文件所在的标准输入-l
终止标志,例如setfacl
列出名为setxattr
的目录另请参阅:https://stackoverflow.com/questions/8957222/are-there-standards-for-linux-command-line-switches-and-arguments
“ POSIX ACL” (访问控制列表),例如用作
/proc
的后端。已撤消,但已在多个操作系统中实现,包括在Linux中使用
apt-get
。谁符合POSIX?
许多系统都严格遵循POSIX,但实际上很少有维护该标准的Open Group认证。著名的认证产品包括:
OS X(Apple)X代表10和UNIX。是大约2001年发布的第一个Apple POSIX系统。另请参见:https://stackoverflow.com/questions/5785516/is-osx-a-posix-os
AIX(IBM)
HP-UX(HP)
Solaris(Oracle)
大多数Linux发行版都非常合规,但未通过认证,因为它们不想支付合规性检查。浪潮的K-UX和华为的EulerOS是两个经过认证的示例。
通过认证的系统的官方列表位于:https://www.opengroup.org/openbrand/register/,也可以在Wiki页面上找到。 。
Windows
Windows在其某些专业发行版中实现了POSIX。
由于它是一项可选功能,因此程序员无法将其用于大多数最终用户应用程序。
Windows 8已弃用该支持:
https://stackoverflow.com/questions/4746043/where-does-microsoft-windows-7-posix -implementation-currently-stand
https://superuser.com/questions/495360/does-windows-8-still-implement-posix
功能请求:https://windows.uservoice.com/ forums / 265757-windows-feature-suggestions / suggestions / 6573649-full-posix-support
在2016年,一个新的类似于Linux的正式API称为“ Linux的Windows子系统”。它包括Linux系统调用,ELF运行,q4312079q文件系统的一部分,Bash,GCC,(TODO可能是glibc?),q4312079q等: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 O:https://stackoverflow.com/questions/27604455/is-android-posix-compatible
奖金级别
Linux Standard Base进一步扩展了POSIX。
使用非框架索引,它们更具可读性和可搜索性:http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html
获取完整的压缩文件用于grepping的HTML页面版本:https://stackoverflow.com/questions/453993/is-there-a-listing-of-the-posix-api-functions/45832939#45832939
评论
问题是关于POSIX和SUS,但是这个答案根本没有提到SUS ...
–基德布拉
17-10-6在12:16
@Kidburla是一个绝佳的机会,可以添加您自己的答案并获得代表:-)(或将其编辑为我的代表,并给我代表呵呵)
– Ciro Santilli郝海东冠状病六四事件法轮功
17-10-6在12:27
实际上,有些Linux发行版已经过Unix认证,例如K-UX和Huawei EulerOS。它们出现在POSIX认证列表中,也出现在Opengroup网站上
–phuclv
18-10-21在3:31
@phuclv谢谢,我已将其添加到答案中。
– Ciro Santilli郝海东冠状病六四事件法轮功
18-10-21在6:30
#3 楼
POSIX是可移植操作系统标准。它描述了兼容操作系统必须提供给软件的某些实用程序,API和服务(例如套接字,文件I / O和线程),以及有关如何从程序中调用它们的约定。这个想法是,为一个兼容POSIX的操作系统编写的程序比在不兼容POSIX的操作系统之间移植更容易移植到另一个POSIX操作系统。这就是为什么将应用程序从FreeBSD移植到Linux比将其从FreeBSD移植到Windows要容易得多的原因(尽管Windows表面上支持POSIX的一个子集。)
#4 楼
POSIX是UNIX的一个子集,旨在覆盖其他操作系统的各种类似Unix的环境。这最初包括环境,例如Eunice for VMS,Windows NT的POSIX个性和Apollo Domain / OS。您可以将其视为操作系统服务子集的标准可移植性API,该操作系统服务的行为在Unix和非Unix之间是相同的。有关更多信息,请参见http://standards.ieee.org/develop/wg/POSIX.html。评论
我现在已经阅读了更多有关它的内容,而且看起来Uinx确实是鸡,而POSIX是鸡蛋。.但我确实想知道UNIX是否仍然统治着市场。和UNIX必须符合POSIX? ...顺便说一句。似乎POSIX是由Richard Stallman创造的。
– Peter.O
2011-04-25 19:11
@ fred.bear:简短的回答:UNIX(商标)必须符合POSIX; Unix(产品)是POSIX的主要基础。 unices(操作系统家族)大多一致,但有更多共同点。请参阅Linux是Unix吗?是Mac OS X,UNIX吗?有关的讨论。
–吉尔斯'所以-不再是邪恶的'
2011年4月25日在20:34
@ fred-bear很多人认为POSIX标准是当今由Linux内核开发社区指导的,恕我直言,这不是一件好事。
–sakisk
2011年4月26日下午14:05
@faif我从未听说过,发现它不太可能,可以发表参考吗?
–penguin359
2011年4月28日在4:06
@GillesUNIX®商标的所有者Open Group还负责UNIX®认证和规范,它们被称为Single UNIX Specification或SUS。 POSIX由不负责UNIX®的IEEE开发。自2001年以来,它们基本上是同步开发的,但是从技术上讲,它是SUS,现在是定义UNIX®的版本4。
–penguin359
2011年4月28日下午4:11
评论
SUS是UNIX的正式定义,因为The Open Group(不是IEEE)拥有UNIX商标。请在下面找到我的答案。unix.stackexchange.com/tags/posix/info
stackoverflow.com/questions/1780599/…