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

Mic*_*ovy 6 c linux memory limit

我想运行一个内存限制设置的进程(理想情况下数据段,堆栈和堆)我的代码看起来像

child = fork();
if ( child == 0 ) 
{
    ...
    execv( program, args );
}
wait( &status );
Run Code Online (Sandbox Code Playgroud)

这个结构应该是保存者,我用它做一些事情(重定向stdin/out,测量执行时间等)

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

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

Mik*_*ley 2

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