我想运行一个设置了内存限制的进程(最好是数据段、堆栈和堆) 我的代码看起来像
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/