c - 为什么信号在 Linux 中依赖于平台?
问题描述
SIGNAL(7)
手册页指出:
下表给出了每个信号的数值。如表所示,许多信号在不同的架构上具有不同的数值
......
的确。在 Linux 内核源代码中,我们可以确保 fe 具有SIGTERM
- 这里有一堆用于不同架构的signal.h文件。
那么,如果它是操作系统级别并且与硬件没有明确的关系,为什么会有这样的平台依赖性呢?为什么 Linux 不能在所有支持的平台上平等地处理它?
PS这篇文章没有帮助。
解决方案
很多不应该依赖于平台的东西也是如此:ioctl
数字、系统调用号、fcntl
数字stat
和 sysv ipc 结构、mmap
标志等等等等。原因是历史错误。
早期,Linux 以那里使用的主要现有专有 unix 为每个平台的定义建模。对一些人来说,曾经尝试过真正能够从专有的 unix 运行二进制文件,并且在极少数情况下,有一段时间,它有点工作。其余的只是对精力和技术债务的巨大浪费。即使在它确实有效的地方,这些旧系统也早已不复存在。
现代 Linux 在某种程度上弥补了这一点,对所有新系统调用使用统一编号,asm-generic
对新类型统一定义等。但所有遗留包袱仍然存在。
推荐阅读
- c++ - stod 转换一些 sig 无花果被切断
- keras - Keras 中的课程数量错误
- python - python浮点乘法 - 简单的数学不能正确输出
- angular - 我应该如何将在线帮助文档与现有的 Angular 5 应用程序集成?
- python-3.x - 试图在 scikit-image 中创建弧线是错误的
- python - 使用 rpyc 访问另一个文件中的类成员而无需导入
- css - 在 Typora 中设置图像左对齐
- typescript - create-react-app my-app --scripts-version=react-scripts-ts 获得 Jest 20.0
- excel - 如果日期和时间随着某些标准和时间而改变
- ios - 如何为 collectionView 中的照片创建这种网格设计?