【问题标题】:Is it possible to signal TSTP and then kill it if timeout occurs是否可以发出 TSTP 信号然后在发生超时时将其终止
【发布时间】:2016-09-04 08:47:07
【问题描述】:

我可以向 PID 发送信号 TSTP ,在一段时间后如果进程仍然“暂停” - 然后杀死它?

谢谢。

【问题讨论】:

    标签: linux unix signals signal-processing


    【解决方案1】:

    应该是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)伪文件,但思路是一样的。更多文档:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多