为什么信号在 Linux 中是平台相关的?

z0l*_*pka 3 c linux posix signals linux-kernel

SIGNAL(7) 手册页指出:

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

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

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

PS 这个帖子没有帮助。

R..*_*R.. 7

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

早期,Linux 将每个平台的定义建模为在那里使用的主要现有专有 unix。对一些人来说,他们试图真正能够从专有的 unix 运行二进制文件,在一些罕见的情况下,有一段时间,它有点奏效。剩下的只是对努力和技术债务的巨大浪费。即使在它确实有效的地方,这些旧系统也早已不复存在。

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