如何检测进程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脚本(虽然这可能相当容易)。