dut*_*d92 5 c++ linux process file-descriptor proc
我正在开发一个具有进程监视功能的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),也可以定期对进程表进行采样(bootchart 以这种方式工作)。