gpt4 book ai didi

linux - 系统调用 : UNIX, Linux、BSD 和 Solaris 变体

转载 作者:IT王子 更新时间:2023-10-29 00:47:35 26 4
gpt4 key购买 nike

主要 *NIX 变体的系统调用数量是否存在差异?

哪些系统调用将得到普遍支持?

最佳答案

任何不是 posix 标准的东西都可能是额外的系统调用,或者它可能是系统调用层之上的额外库功能。如果您的目标是编写可移植代码,请坚持使用 posix,并尽可能多地使用 c 库(而不是直接系统调用)。

如果您只是好奇,它们差异很大。为了符合 posix 标准,您不需要在系统调用方面提供太多支持。它指定了您需要支持的接口(interface),但是您是通过调用内核还是跳转到共享库来实现这一点完全取决于您。

Mac OS X 甚至不保证版本之间系统调用的二进制兼容性,他们认为它们是系统库和操作系统之间的私有(private)接口(interface)。大多数人认为的系统调用实际上是动态库中调用内核的小 stub ,如果您直接进行系统调用而不是链接到该动态库并调用 stub 函数,那么您的代码可能会在操作系统之间中断发布。

这种灵 active 意味着许多操作系统实现的系统调用与它们支持 posix 所需的系统调用完全不同,然后在它们的库中处理差异。例如,Linux 的线程实现基于名为 clone() 的系统调用,它们处理大量簿记工作以使 pthreads 接口(interface)在其库中工作。

因此,如果您的目标是实现一个标准库,该库不链接任何其他内容并且可以在多个 unix 上运行,那么在某些情况下您可能会发现事情有点棘手。如果您的目标是编写一些链接到各种 Unix 上的标准库的东西,您可以获得一个总体上统一的接口(interface)。

关于linux - 系统调用 : UNIX, Linux、BSD 和 Solaris 变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/274700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com