【问题标题】:Where is the meaning of system constants such as _SIG_MAXSIG defined?_SIG_MAXSIG等系统常量的含义在哪里定义?
【发布时间】:2014-07-12 15:05:38
【问题描述】:

在 FreeBSD 中,我们在 _sigset.h 中定义了常量 _SIG_MAXSIG。我想知道这个常量的含义是在哪里定义的。显然,这类似于最大信号值。但是,我正在寻找一个明确的标准,即所有开发人员在解释该值时都应该关注的共同点。其他常量的含义也是如此——定义它们含义的明确来源是什么?

【问题讨论】:

  • 提示:以_ 开头的标识符通常是私有的而不是标准化的。
  • 谢谢@larsmans,这有帮助。有没有标准说以_ 开头的标识符是....? ;-)。
  • C99,第 7.1.3 节说“所有以下划线和大写字母或另一个下划线开头的标识符始终保留用于任何用途”,但这与您将要接近的一样得到。 :-)
  • ...但是,它们之间的 POSIX 和 C99 确实标准化了 _exit_Exit,也许还有一些我忘记的 _.* 标识。

标签: operating-system posix freebsd


【解决方案1】:

这不会直接回答您的问题,因为我不知道指定 _SIG_MAXSIG 的标准(我认为它不是标准化的),但是您要查找的大部分内容是由 @ 定义的987654321@。注意:您必须在网站上注册才能下载规范。

第 XSH 2.4 节解释了与信号相关的概念。我没有看到关于最大信号数量的任何信息,除了SIGRTMINSIGRTMAX——它们是用于实时信号的。

【讨论】:

  • 您可以通过pubs.opengroup.org/onlinepubs/9699919799 在线浏览POSIX 标准;这是SUS的基础。 (不确定 SUS 添加了什么。)
  • @larsmans 谢谢!我以为有一个链接,但我在本地已经有一段时间了,所以我认为该网站发生了一些变化。再次感谢。
  • 您的回答有帮助,谢谢!我已经用谷歌搜索了sites:pubs.opengroup.org _SIG_MAXSIG 并没有得到结果,所以我怀疑这个常量不是 SUS 或 POSIX 的一部分。考虑到它不是标准化的,是否在某处进行了解释?如果至少在 FreeBSD 或任何其他 BSD 项目中没有解释这个常量的含义,我会感到惊讶......
  • 不幸的是,我不相信有。许多项目都缺乏文档。很难跟上所有的变化,甚至开始都需要付出很大的努力。如果您对 BSD 源代码感兴趣,最好查看 The Design and Implementation of the FreeBSD Operating System。看了前作4.4 BSD操作系统的设计与实现,非常好。
  • 您应该能够通过内核和 libc 源 grep 找出标识符的使用位置。对于掌握基本 Unix 概念的人来说,BSD 代码通常非常易读(不像 GNU 代码)。
猜你喜欢
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-16
相关资源
最近更新 更多