首页 > 解决方案 > 为什么信号在 Linux 中依赖于平台?

问题描述

SIGNAL(7)手册页指出:

下表给出了每个信号的数值。如表所示,许多信号在不同的架构上具有不同的数值
......

的确。在 Linux 内核源代码中,我们可以确保 fe 具有SIGTERM- 这里有一堆用于不同架构的signal.h文件。

那么,如果它是操作系统级别并且与硬件没有明确的关系,为什么会有这样的平台依赖性呢?为什么 Linux 不能在所有支持的平台上平等地处理它?

PS这篇文章没有帮助。

标签: clinuxlinux-kernelsignalsposix

解决方案


很多不应该依赖于平台的东西也是如此:ioctl数字、系统调用号、fcntl数字stat和 sysv ipc 结构、mmap标志等等等等。原因是历史错误。

早期,Linux 以那里使用的主要现有专有 unix 为每个平台的定义建模。对一些人来说,曾经尝试过真正能够从专有的 unix 运行二进制文件,并且在极少数情况下,有一段时间,它有点工作。其余的只是对精力和技术债务的巨大浪费。即使在它确实有效的地方,这些旧系统也早已不复存在。

现代 Linux 在某种程度上弥补了这一点,对所有新系统调用使用统一编号,asm-generic对新类型统一定义等。但所有遗留包袱仍然存在。


推荐阅读