SIGNAL(7)
手册页指出:
The numeric value for each signal is given in the table below. As shown in the table, many signals have different numeric values on different architectures
...
的确如此。在 Linux 内核源代码中,我们可以确保 f.e.与 SIGTERM
- 这里有一堆用于不同架构的 signal.h 文件。
那么,如果是操作系统级别,与硬件没有明确的关系,为什么会有这样的平台依赖性呢?为什么 Linux 不能在所有支持的平台上平等地处理它?</p>
附:这个post没有帮助。
最佳答案
许多不应该依赖于平台的东西也是如此:ioctl
数字、系统调用数字、fcntl
数字、stat
和 sysv ipc 结构,mmap
flags 等等等等等等。原因是历史错误。
早期,Linux 将每个平台的定义建模在当时使用的主要现有专有 unix 上。对一些人来说,曾经尝试过真正能够从专有的 unix 运行二进制文件,并且在极少数情况下,有一段时间,它有点工作。其余的只是对精力和技术债务的巨大浪费。即使在它确实有效的地方,这些旧系统也早已不复存在。
现代 Linux 在某种程度上弥补了这一点,对所有新系统调用使用统一编号,对新类型统一 asm-generic
定义等。但所有遗留包袱仍然存在。
关于c - 为什么信号在 Linux 中依赖于平台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59253894/