【问题标题】:How to wait for a non-child process to change state?如何等待非子进程改变状态?
【发布时间】:2025-09-12 16:15:02
【问题描述】:

在我向另一个进程发送kill SIGSTOP 信号后,如何检查该进程是否真的停止了?

该进程不是子进程。并且不要使用读取进程表的方法,例如,

ps -ef/aux

【问题讨论】:

    标签: linux process signals kill ptrace


    【解决方案1】:

    你可以在目录/proc中看到。

    考虑进程 ID 17858。您正在向该进程发送信号 SIGSTOP。现在该过程已停止。在/proc17858(目录名称是进程ID)。目录在那里。在那里,状态文件可用。使用那个我们可以获得文件的状态。因为那个过程的状态是这样的。

    State:  T (stopped)
    

    【讨论】:

    • 如果您想避免轮询,我想这可以与inotifywait 结合使用。不过,这种方法确实有点疯狂:在其自己的元数据文件系统上使用内核异步事件 API,但我想这是从内核获取有关状态更改的事件的一种很好的通用方法!
    • 嗯,唉,当/proc/$PID/status 发生变化时,我们似乎没有收到任何 inotify 事件。