Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Linux:如何检测消耗最大内存的进程并杀死它?_C++_Linux_Multithreading_Memory Management_Process - Fatal编程技术网

C++ Linux:如何检测消耗最大内存的进程并杀死它?

C++ Linux:如何检测消耗最大内存的进程并杀死它?,c++,linux,multithreading,memory-management,process,C++,Linux,Multithreading,Memory Management,Process,Linux:如何检测消耗最大内存的进程并使用std::thread杀死它?我是一个新的C++代码,因此,用C++代码来实现该函数的解释将受到高度重视。 分配的确切文本是写一个C++代码,监视设备的内存使用,并且它应该知道在其目标最大内存使用中达到的设备。当线程检测到这种情况时,它应该能够识别占用更多内存的进程,并执行以下操作,对照应用程序优先级列表检查进程。如果进程处于低优先级类别,请停止进程并重新启动。否则,通知用户由于识别的进程而发生内存过度运行,根据用户确认进行重新启动。重新启动应为设备重

Linux:如何检测消耗最大内存的进程并使用std::thread杀死它?我是一个新的C++代码,因此,用C++代码来实现该函数的解释将受到高度重视。
分配的确切文本是写一个C++代码,监视设备的内存使用,并且它应该知道在其目标最大内存使用中达到的设备。当线程检测到这种情况时,它应该能够识别占用更多内存的进程,并执行以下操作,对照应用程序优先级列表检查进程。如果进程处于低优先级类别,请停止进程并重新启动。否则,通知用户由于识别的进程而发生内存过度运行,根据用户确认进行重新启动。重新启动应为设备重新启动或过程重新启动,这将根据造成这种情况的过程的性质来决定。详细信息应记录在日志文件中,您可能需要查看

通过此链接:

linux“oom杀手”的任务是牺牲一个或多个进程,以便在所有其他进程都失败时为系统释放内存

所以,从技术上讲,你不需要做任何事情

但是,如果您仍然想根据自己选择和终止受害进程的标准自己编写它,那么您可以创建一个Linux服务(一直在后台运行)来完成这项工作。示例代码在链接文章中

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

附加阅读:

std::thread
应该是产生一个线程,而不是杀死一个进程。展示您所做的尝试,以便我们了解作者对解决您的问题的主要兴趣,然后我们将为您提供建议或可能的解决方案。如果你是初学者,我建议你寻找一个更简单的应用程序。我的意思是内存监控过程应该在后台进行,所以我必须使用std::thread。要实现的功能是检测消耗RAM到致命程度的进程,并终止其虚拟内存大小或驻留集大小?如果你能把作业的确切内容写进去,那就容易多了。你已经知道如何使用std::thread了吗?不,我还没有使用std::thread。