gpt4 book ai didi

c - C语言判断进程是否空闲

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:45 25 4
gpt4 key购买 nike

我怎么知道进程处于空闲状态?

假设我的程序产生了 n 个进程,我想知道它们中是否有空闲的,所以我可以让它们做额外的工作,但问题是如何确定一个进程在其分配的时间片内是否空闲。

我可以找到整个系统的 CPU 利用率((总时间 - 空闲时间)/总时间),但不知道如何获取进程的利用率。

因为(如果我错了请纠正我)一个进程如果在一个时间片内空闲,会自愿放弃剩余的 cpu 时间,所以为该进程获取 cpu 时间是不好的。

一个可能的解决方案是查看自愿上下文切换计数是否增加(假设超过阈值)但我必须使用低于 2.6.23 的内核,因此读取/proc/pid/status 的 voluntary_context_switches 和 nonvoluntary_context_switches 不是一个我的选择...

任何建议...

注意:我上面给出的例子过于简单化了。 IPC 不是一个选项。特定调用的进程应该能够确定它是否处于空闲状态。在流程花费时间的所有地方进行跟踪是不可行的。

最重要的是,我想查看一些内核统计信息以确定此特定进程是否正在运行,并根据此信息执行一些操作。

最佳答案

您可以阅读/proc/pid/stat —— 第三个字段(使用 scanf("%*s %*[^)]) %c", &state)) 是进程当前状态的单个字符:

R - running
S - sleeping in interruptable wait
D - waiting in uninterruptable disk sleep
Z - zombie (exited)
T - traced or stopped
W - paging wait

如果进程停止等待 sleep 或 I/O,它将处于状态 S

关于c - C语言判断进程是否空闲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25818837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com