为什么信号在 Linux 中依赖于平台?

Why signals are platform-dependent in Linux?

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。 with SIGTERM - 这里有一堆 signal.h 不同架构的文件。

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

P.S。这 post 没有帮助。

很多不应该依赖于平台的东西也是如此:ioctl numbers, syscall numbers, fcntl numbers, stat and sysv ipc structures, mmapflags等等等等原因是历史错误

早期,Linux 在每个平台上使用的主要现有专有 unix 上对每个平台的定义进行了建模。对于一些人来说,有人试图从专有的 unix 中实际 运行 二进制文件,在极少数情况下,有一段时间,它有点奏效。剩下的只是对努力和技术债务的巨大浪费。即使在它确实有效的地方,这些旧系统也早已不复存在。

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