我可以向PID发送信号TSTP,经过一段时间后,如果进程仍处于“暂停”状态 - 然后将其杀死吗?
感谢。
答案 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
)伪文件,但想法是一样的。更多文档: