5

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

但是,由于 /proc/pid/status 将“就绪”和“正在执行”状态结合为“正在运行”,我不知道如何找出进程实际处于这些状态中的哪一个。任何人都可以对我如何发现这一点提供任何建议?

4

1 回答 1

2

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

于 2012-10-05T21:11:27.247 回答