Linux - 查找进程是否已准备就绪或正在运行

Linux - Find if process is ready or running

本文关键字:运行 准备就绪 查找 进程 是否 Linux      更新时间:2023-10-16

我正在开发一个具有进程监视功能的C++应用程序,该应用程序基于以下模型监视状态更改: http://www.macdesign.net/capella/it4813/images/stallings-Linux_process-thread_states-f4.18.png

但是,由于/proc/pid/status 将"就绪"和"执行"状态组合到"正在运行"中,我不知道如何找出进程实际处于哪些状态。谁能就我如何发现这一点提供任何建议?

问题格式不正确。 在单个 CPU 上,实际上永远不可能看到处于"正在运行"状态的进程,因为根据定义,监视进程具有 CPU。 如果你真的需要对进程转换进行细粒度的日志记录控制,你需要在内核中完成(或者至少在内核内支持下 - 参见 lttng 或 systemtap 以获取可能在此处有所帮助的工具)。 用于从用户空间跟踪 CPU 使用情况的工具更加粗粒度,要么使用内核已经跟踪的总使用数字(例如 /usr/bin/time )或通过间隔对工艺表进行采样(引导图以这种方式工作)。