为了账号安全,请及时绑定邮箱和手机立即绑定

哪个标准定义了诸如“ _SC_MONOTONIC_CLOCK”之类的“ sysconf()”

哪个标准定义了诸如“ _SC_MONOTONIC_CLOCK”之类的“ sysconf()”

拉丁的传说 2021-04-06 21:14:55
我尝试打印的值_SC_MONOTONIC_CLOCK并得到了149。我在POSIX网站上尝试了Google搜索,但没有结果。
查看完整描述

2 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

POSIX声明符号常量_SC_*unistd.h标头中定义:

unistd.h标题应当载明下列符号常量sysconf():[...]_SC_MONOTONIC_CLOCK

但是,它没有定义这种符号常量的值是什么-它对您的应用程序并不重要(并且您不应该依赖于该值)。

例如,GNU C库将所有这些都列出在enum;中。而newlib定义了显式值。OpenBSD和NetBSD也使用显式但不同的值。


查看完整回答
反对 回复 2021-04-16
?
不负相思意

TA贡献1777条经验 获得超10个赞

目的是弄清楚这与pynexj和其他对此感到困惑的人的可移植性之间的关系。

该常量_SC_MONOTONIC_CLOCK由C库定义,并且如果C库支持多种体系结构,则常量可能因体系结构而异。

在具有相同硬件体系结构的所有Linux发行版上,都使用相同或二进制兼容的C库。(在这种情况下,二进制兼容意味着所有这些C库_SC_MONOTONIC_CLOCK在相同的硬件体系结构上定义相同的值。)

这意味着,如果满足其他依赖项(例如已安装/可用的动态库),则在某些Linux发行版中为某些Linux架构编译的代码将在同一架构上的其他Linux发行版中工作。

在源代码级别,需要针对每种体系结构和操作系统分别编译代码。使用相同库名称和位置的Linux发行版可以运行相同的二进制文件(如果安装了必要的动态库),因为它们的C库可以是相同的,也可以是二进制兼容的。

其他一些操作系统具有兼容性层,以公开用于运行Linux二进制文件的Linux二进制兼容接口。它们可以运行某些/大多数/所有Linux二进制文件,具体取决于该兼容层的综合程度。这与在Linux中使用Wine来运行Windows二进制文件非常相似。

有某些怪异的C库实现,并且可能有一些制造商使用修改/修补的代码伪造的“发行版”,它们与二进制不兼容。我只在嵌入式设备(特别是那些缺少MMU或内存管理单元,因此不支持虚拟内存的设备)上看到这些,但是在台式机,服务器或笔记本电脑上却没有看到。


查看完整回答
反对 回复 2021-04-16
  • 2 回答
  • 0 关注
  • 305 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信