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

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

对于Windows和c ++:

内存使用情况

查看GetProcessMemoryInfo 。 在msdn也有一个例子。

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

CPU使用率

对于CPU使用情况来说,它有点困难,但以下stackoverflow问题与此相关: 获取c ++ / windows中当前cpu使用的特定进程

在最新版本的Windows中,您可以要求操作系统为您处理此问题 – 创建进程作业对象并配置限制 。 作业对象的会计function将允许您跟踪资源使用情况。

在Linux / Unix中,您将使用ulimit

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

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

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

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

然后你可以调用’execvp’来调用’kill’,一个函数来自。

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