2017-08-10 140 views
-2

Linux:如何检测消耗最大内存的进程并使用std :: thread终止进程?我是C++编程的新手,因此我们将非常感谢用C++代码来实现该功能的解释。 分配的确切文本是编写一个C++代码,用于监视设备的内存使用情况,并且应该知道达到目标最大内存使用情况的设备。当线程检测到这种情况时,它应该能够识别正在占用更多内存的进程并执行以下操作,根据应用程序优先级列表检查进程。如果进程处于低优先级类别,请停止进程并重新启动。否则,由于所识别的过程通知用户存储器过载发生,根据用户确认重新启动。重新启动应该是设备重新启动或进程重新启动,这将根据导致此情况的进程的性质决定。详细信息应在日志文件中捕获。Linux:如何检测消耗最大内存并杀死它的进程?

+0

'的std :: thread'应该产生一个线程,而不是终止进程。 –

+1

显示您所尝试过的内容,因此我们感谢作者主要是解决您的问题,然后我们将帮助您提出建议或可能的解决方案。如果您是初学者,我建议您寻找更简单的应用程序。 – eyllanesc

+0

我的意思是内存监视的过程应该发生在后台,所以我必须使用std :: thread。要实现的功能是检测一个耗用RAM的进程并将其杀死 – Linuxknowledgeseeker

回答

0

您可能想要查看Linux OOM (Out-of-memory) killer

从这个链接:

它是Linux的OOM杀手“,以释放内存的系统时,一切都失败牺牲一个或多个进程的工作。

所以,从技术上说,你不需要做任何事情。 ;-)

但是,如果您仍然想根据自己的标准选择并杀死受害者进程,您可以创建一个Linux服务(它始终在后台运行)来执行此操作。示例代码在链接的文章中。

关于你的std::thread点,如果你已经有一个可执行文件,并且你想产生一个专门的线程来做到这一点,是的,你也可以做到这一点。逻辑将简单地进入该线程。

补充阅读:
How to Configure the Linux Out-of-Memory Killer