我试图阅读源代码,以了解哪些进程是可响应的这些映射,但我仍然无法弄清楚。有人能给我一个提示,说明哪一种代码相对于它吗?
发布于 2022-02-18 10:30:15
我认为默认的信号映射是由Linux内核处理的,而不是早期进程(init、agetty、login或bash)。
但是,可以通过关联的termios库来设置/获取它。
为了验证我的假设,我编写了一个简单的测试程序(test.c),并将它作为内核调用的第一个进程(就像init一样)。守则如下:
/* test.c */
#include <stdio.h>
#include <unistd.h>
#include <termios.h>
int main(int argc, char **argv)
{
struct termios ts;
tcgetattr(STDIN_FILENO, &ts);
printf("INTR: %u\nSUSP: %u\n", ts.c_cc[VINTR], ts.c_cc[VSUSP]);
return 0;
}然后作为init和重新启动系统,程序将显示:
INTR: 3
SUSP: 26这两个值分别对应于^C和^Z。这意味着内核在默认情况下执行任务。
https://unix.stackexchange.com/questions/690862
复制相似问题