如何检测进程CPU /内存使用情况并在超过某个值时将其终止?

时间:2013-12-11 18:47:23

标签: c++ c memory-management process cpu-usage

我正在学习c / c ++,我想知道是否有可能通过它的名称来检测进程,并在它的cpu /内存使用率超过某个值时将其终止。我会对实际代码提供任何帮助,或者只是指出我正确的方向。

3 个答案:

答案 0 :(得分:2)

在最新版本的Windows中,您可以要求操作系统为您处理此问题 - 创建Process Job Object and configure limits。作业对象的会计功能将允许您跟踪资源使用情况。

在Linux / Unix中,您将使用ulimit

不要尝试自己强制执行此操作。如果您有一个失控的过程,最可能的情况是您的执行者不会及时安排杀死它。你真的需要来自内核的帮助,特别是线程调度程序。

答案 1 :(得分:0)

对于Windows和c ++:

内存使用

结帐GetProcessMemoryInfomsdn还有一个例子。

GetProcessMemoryInfo()函数将为您提供指向PROCESS_MEMORY_COUNTERS结构的指针,该结构包含所有内存使用信息。

CPU使用率

对于CPU使用情况,它有点困难,但以下stackoverflow问题与此相关:Getting current cpu usage in c++/windows for particular process

答案 2 :(得分:0)

您需要创建一个流程来监控其他流程。

要在Linux中用c ++执行此操作:

您可以直接从/ proc / stat读取,或者创建一个运行'ps'的进程并解析其输出以查找具有高%cpu的进程。要创建运行ps的进程,您需要使用'fork'命令。

然后你可以调用'execvp'来调用'kill',这是一个函数。

同样的想法适用于bash脚本(虽然这可能相当容易)。