gpt4 book ai didi

c - 在 C 中设置进程的内存限制(使用 fork 和 exec)

转载 作者:IT王子 更新时间:2023-10-29 00:53:27 27 4
gpt4 key购买 nike

我想运行一个设置了内存限制的进程(最好是数据段、堆栈和堆)我的代码看起来像

child = fork();
if ( child == 0 )
{
...
execv( program, args );
}
wait( &status );

这个结构应该是保护者,我用它做了一些事情(重定向标准输入/输出,测量执行时间等)

我的问题:如何为程序 进程设置内存限制并在超过限制时通知父进程?进程不应该被 sigsegv 杀死,我想知道,进程被杀死只是因为这个内存限制。或者更好的是,有没有办法在完成时获取此进程的内存使用情况?该过程完成后,我可以比较最大使用内存。

我不能使用 valgrind(或类似的东西),因为我不能减慢执行时间。

最佳答案

您可以调用setrlimit()在检查子进程之后和调用 execv() 之前。我不知道如何通知家长,但也许这会为您指明正确的方向。

关于c - 在 C 中设置进程的内存限制(使用 fork 和 exec),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16887164/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com