首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SIGTERM杀灭子壳

SIGTERM杀灭子壳
EN

Stack Overflow用户
提问于 2014-08-07 18:27:32
回答 2查看 392关注 0票数 0

我相信这真的很简单,但不管怎样,这让我很痛苦,我有点沮丧和困惑。

所以,我有一个脚本,我把它归结为:

代码语言:javascript
复制
#!/bin/sh
sleep 50 | echo

如果我在命令行运行这个命令,然后按下Ctrl,它就会停止,就像我所期望的那样。

如果我给它发送信号,用杀死,它什么也不做。我觉得这很奇怪,因为我觉得应该是一样的。

然后,如果我发送它,它也会死,但是如果我查看ps,睡眠仍然在运行。

我漏掉了什么这里?

这显然不是真正的脚本,它运行python,而且在启动-停止-守护进程试图杀死守护进程之后继续运行更大的问题。

帮助我的人。我是哑巴。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-07 18:48:28

发生这种情况的原因是,Ctrl被传递到睡眠进程,而您要发送的sigint只传递给脚本本身。有关此问题的详细信息,请参阅Child process receives parent's SIGINT

您可以在点击ctrl或发送sigint时使用strace -p来验证这一点;strace会告诉您传递了哪些信号。

编辑:我不认为你是个傻瓜。过程和它们的工作方式看起来很简单,但是细节往往很复杂,甚至专家也会对这种事情感到困惑。

票数 1
EN

Stack Overflow用户

发布于 2014-08-07 18:36:33

我所写的脚本名为test.sh,下面是containt。

代码语言:javascript
复制
#!/bin/sh
sleep 50 | echo

执行之后,我完成了Ctrl-C -> --它的工作良好意味着关闭它。再次执行,在另一个终端中,我通过ps -ef|grep test.sh检查pid,在找到PID后,我执行了kill <pid>,它杀死了进程,再次验证我执行了ps -ef|grep test.sh,没有得到任何pid。

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

https://stackoverflow.com/questions/25189563

复制
相关文章

相似问题

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