我正在学习c / c ++,我想知道是否有可能通过它的名称来检测进程,并在它的cpu /内存使用率超过某个值时将其终止。我会对实际代码提供任何帮助,或者只是指出我正确的方向。
答案 0 :(得分:2)
在最新版本的Windows中,您可以要求操作系统为您处理此问题 - 创建Process Job Object and configure limits。作业对象的会计功能将允许您跟踪资源使用情况。
在Linux / Unix中,您将使用ulimit
。
不要尝试自己强制执行此操作。如果您有一个失控的过程,最可能的情况是您的执行者不会及时安排杀死它。你真的需要来自内核的帮助,特别是线程调度程序。
答案 1 :(得分:0)
对于Windows和c ++:
结帐GetProcessMemoryInfo。 msdn还有一个例子。
GetProcessMemoryInfo()
函数将为您提供指向PROCESS_MEMORY_COUNTERS结构的指针,该结构包含所有内存使用信息。
对于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脚本(虽然这可能相当容易)。