【发布时间】:2016-09-04 08:47:07
【问题描述】:
我可以向 PID 发送信号 TSTP ,在一段时间后如果进程仍然“暂停” - 然后杀死它?
谢谢。
【问题讨论】:
标签: linux unix signals signal-processing
我可以向 PID 发送信号 TSTP ,在一段时间后如果进程仍然“暂停” - 然后杀死它?
谢谢。
【问题讨论】:
标签: linux unix signals signal-processing
应该是3个操作的简单序列,我想:(1)向pid发送TSTP信号,(2)睡眠,(3)读取/proc/$pid/stat的第三个字段,看它是否仍然等于@987654334 @,如果是,则向其发送 KILL 信号。
kill -TSTP $pid;
sleep 2;
if [[ "$(awk '{ print($3); };' </proc/$pid/stat;)" == 'T' ]]; then kill -KILL $pid; fi;
有用的文档:
上面的代码和文档存在于 bash 世界中,但同样的操作也可以从 C 代码中轻松执行。工作量更大,尤其是打开和读取/proc/$pid/stat(或/proc/$pid/status)伪文件,但思路是一样的。更多文档:
【讨论】: