【问题标题】:Does POSIX-standard require it's specifications to be implemented in the C language only?POSIX 标准是否要求其规范仅用 C 语言实现?
【发布时间】:2020-11-15 22:49:29
【问题描述】:

根据我在*和其他来源上阅读的文章,我了解到像基于 UNIX 的操作系统在 C 中实现了 POSIX-API。此外,我还没有找到符合 POSIX 的以 C 以外的任何语言实现 POSIX 功能的操作系统。

那么,POSIX 标准是否要求其规范只能用 C 语言实现?有人可以用(纯)Rust 等任何其他编程语言为他们自己的(自制)操作系统实现 POSIX 功能,并将该操作系统认证为符合 POSIX 的操作系统吗?

【问题讨论】:

  • POSIX 要求系统具有带有特定 API 的 C 标头。如果您认为这些(以及支持它们所需的绑定)损害了实现的纯度,那么不会。我们不能。
  • @StoryTeller-UnslanderMonica 感谢您的评论。那么您是说使用 C 标头绑定的性能开销是人们不使用 C 以外的任何其他语言编写 API 的唯一原因?我说的对吗?
  • 我无法评论性能开销。我只是说你必须有一些C,因为POSIX规范要求你这样做。如果出于某种原因这是不可接受的,那么 POSIX 合规性是不可能的。
  • @StoryTeller-UnslanderMonica 感谢您的解释。我可以想到开发人员坚持使用 C 来实现 POSIX API 的两个原因:1)C 是完成任务的最快语言之一 2)通过查看 C,经验丰富的程序员可以从字面上理解汇编代码对于该特定用途的含义线/sn-p
  • Posix API 是一个 C API。 Posix 定义了 C 程序如何调用 OS 服务。 (由于它是对 C 标准的扩展,它还包括一些与操作系统关系不大的接口。就像 C 标准本身,Posix 并不关心 API 是如何实现的,包括它是用什么语言编写的。你如果你不能让 C 程序透明地调用 Rust 函数,可以使用 Rust 来实现库。但目的是创建一种编写可移植 C 程序的方法。显然,Rust 程序不能是可移植 C 程序。所以这部分Posix 根本不适用。

标签: c operating-system posix


【解决方案1】:

几乎没有人会再次使用 C/C++ 以外的标头定义,这对于 comply with the standard 来说是必需的。

因此,虽然从技术上讲不是必需的,但实际上是必需的,或者您需要根据 ISO 规范从另一种语言 + c99 模拟 C 标头行为。 “应支持 C 语言开发实用程序 c99。” (ISO C 标准) https://pubs.opengroup.org/onlinepubs/9699919799/

然而,遵循 POSIX 系统接口(人们通常称之为 POSIX-API)和“Shell and Utilities”的部分内容是可能的并且通常是实用的。 在这方面,POSIX 是“有缺陷的”,因为它有一个“语言锁定”。

【讨论】:

    最近更新 更多