linux - 是否可以向 TSTP 发出信号,然后在发生超时时将其杀死

标签 linux unix signals signal-processing

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

谢谢。

最佳答案

应该是 3 个操作的简单序列,我认为:(1) 将 TSTP 信号发送到 pid,(2) sleep ,以及 (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 世界中,但同样的操作几乎可以从 C 代码中轻松执行。需要做更多的工作,尤其是打开和读取/proc/$pid/stat(或/proc/$pid/status)伪文件,但是这个想法是一样的。更多文档:

关于linux - 是否可以向 TSTP 发出信号,然后在发生超时时将其杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39315120/

相关文章:

linux - nvidia-docker:获得的权限被拒绝

unix - 按名称对 'ls' 输出进行排序

c - 带互斥同步的 Pi 计算器

node.js - Supervisor 向express.js 发送了哪个信号来重新启动服务器

linux - 自由红帽部署不起作用

android studio on linux : Gradle build is too slow. 持续1个多小时

c++ - TCP 服务器 C++/Unix 命令行

C - 通知另一个线程清理并退出

c - 从磁盘读取和 EINTR

python - 模板语法错误: Caught ImportError while rendering: No module named html5lib