linux - 32 和 33 kill 信号发生了什么变化?

标签 linux bash kill

如果在 bash 中输入 kill -l 并探测信号数。

32 和 33 kill 信号发生了什么变化?

最佳答案

POSIX realtime signals选项定义一组来自 SIGRTMIN 的信号至 SIGRTMAX它们具有各种有用的属性(例如,它们具有明确定义的传递优先级——首先是最低信号编号——并且同一信号的多个实例可以排队,并通过 sigqueue() 与参数相关联)。这些由内核使用信号编号 32 向上实现。

但是 POSIX 不需要 SIGRTMINSIGRTMAX成为用户态代码的编译时常量,而在 GNU libc 中它们不是:如果您使用用户态 <signal.h> 放置源文件通过预处理器(例如 gcc -E ),你会看到 SIGRTMIN实际上扩展为 (__libc_current_sigrtmin()) .

implementation of this inside glibc 至少保留内核支持的前两个值用于其内部目的。其中第一个(最高优先级的此类信号)用于支持线程取消处理;第二个用于与 setuid 的实现相关的事情。 . (参见 here 。我不确定在什么情况下利用分配更多信号供内部使用的能力。)

因此丢失的信号编号是由于 bash 造成的向您展示可用信号的应用程序 View (省略了 glibc 内部使用的信号),而不是内核 View 。

关于linux - 32 和 33 kill 信号发生了什么变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12680624/

相关文章:

Linux命令行printf工具,允许在多处使用相同的参数

c - 哪个时钟应该用于 linux 中的进程间通信?

xml - 在属性之间添加换行符

ios - 在 Xcode 中创建动态预处理器宏

windows - Git Hook 未在 Windows 上运行

java - 如何杀死另一个类中的一个类的实例?

python - 停止扭曲时,工厂会等待 sql 执行完成吗?

c++ - 在 Linux 上为 OpenGL 4.2 设置开发环境(无法获取 gl.h)

linux - 为所有 800 行删除每行前面的 8 个额外空格

vb.net - 如何按用户杀死进程?