Linux – 查找进程是否准备好或正在运行

我正在开发一个具有进程监视function的C ++应用程序,它监视基于这个模型的状态变化: http : //www.macdesign.net/capella/it4813/images/stallings-Linux_process-thread_states-f4.18.png

然而,由于/ proc / pid / status将“就绪”和“执行”状态结合为“运行”状态,所以我不知道如何才能找出这些进程实际上处于哪种状态。提供关于如何发现这一点的任何build议?

这个问题是畸形的。 在单个CPU上, 从来没有可能看到处于“运行”状态的进程,因为根据定义,监视进程具有CPU。 如果你真的需要对进程转换进行细粒度的日志记录控制,你需要在内核中进行(或者至少在内核支持 – 参见lttng或者systemtap,这里可能有帮助的工具)。 从用户空间跟踪CPU使用情况的工具是使用内核已经跟踪的总使用数(例如/usr/bin/time )或者间隔地抽样进程表(使用这种方式的bootchart)来更加粗糙的。