首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪个进程负责将Ctr+C映射到systemd+agetty+login+bash中的intr信号?

哪个进程负责将Ctr+C映射到systemd+agetty+login+bash中的intr信号?
EN

Unix & Linux用户
提问于 2022-02-16 04:54:21
回答 1查看 135关注 0票数 1

我试图阅读源代码,以了解哪些进程是可响应的这些映射,但我仍然无法弄清楚。有人能给我一个提示,说明哪一种代码相对于它吗?

源代码:Agetty+login(util项目)系统%d

EN

回答 1

Unix & Linux用户

发布于 2022-02-18 10:30:15

我认为默认的信号映射是由Linux内核处理的,而不是早期进程(init、agetty、login或bash)。

但是,可以通过关联的termios库来设置/获取它。

为了验证我的假设,我编写了一个简单的测试程序(test.c),并将它作为内核调用的第一个进程(就像init一样)。守则如下:

代码语言:javascript
复制
/* 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和重新启动系统,程序将显示:

代码语言:javascript
复制
INTR: 3
SUSP: 26

这两个值分别对应于^C^Z。这意味着内核在默认情况下执行任务。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/690862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档