栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Ctrl-C如何终止子进程?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Ctrl-C如何终止子进程?

默认情况下,信号由内核处理。旧的Unix系统有15个信号。现在他们有更多。您可以检查

</usr/include/signal.h>
(或杀死-l)。
CTRL+C
是带有名称的信号SIGINT。

内核中也定义了处理每个信号的默认操作,通常它会终止接收信号的进程。

所有信号(但SIGKILL)都可以由程序处理。

这就是shell的作用:

  • 当Shell在交互模式下运行时,此模式具有特殊的信号处理功能。
  • 例如find,运行程序时,shell:
    • fork本身
    • 并为孩子设置默认信号处理
    • 用给定的命令替换孩子(例如,用find)
    • 当您按CTRL+时C,父级外壳将处理此信号,但子级将收到此信号-带有默认操作-终止。(孩子也可以实现信号处理)
      您也可以trap在shell脚本中发出信号…

您也可以为交互式外壳程序设置信号处理,请尝试在您的顶部输入此内容~/.profile。(确保您已经登录并在另一个终端上进行测试-您可以锁定自己)

trap 'echo "Dont do this"' 2

现在,每当您在外壳中按CTRL+C时,它将打印一条消息。不要忘记删除行!

如果有兴趣,可以/bin/sh在此处的源代码中检查原始的旧信号处理。

在上面的注释中有一些错误信息(现已删除),因此,如果对此感兴趣的人是一个很好的链接-信号处理的工作原理。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/659494.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号