是否可以发出TSTP信号,然后在发生超时时将其终止

时间:2016-09-04 08:47:08

标签: linux unix signals signal-processing

我可以向PID发送信号TSTP,经过一段时间后,如果进程仍处于“暂停”状态 - 然后将其杀死吗?

感谢。

1 个答案:

答案 0 :(得分:2)

应该是3个操作的简单序列,其中:(1)将TSTP信号发送到pid,(2)睡眠,以及(3)读取/proc/$pid/stat的第三个字段以查看它是否仍然等于T,如果是,请将KILL信号发送给它。

kill -TSTP $pid;
sleep 2;
if [[ "$(awk '{ print($3); };' </proc/$pid/stat;)" == 'T' ]]; then kill -KILL $pid; fi;

有用的文档:

上面的代码和文档存在于bash Universe中,但是几乎可以轻松地从C代码执行相同的操作。这是一项更多的工作,特别是打开和阅读/proc/$pid/stat(或/proc/$pid/status)伪文件,但想法是一样的。更多文档: