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

标签 c linux memory limit

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

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/

相关文章:

unix - 为什么使用 `clone` 创建进程会导致内存不足故障?

c++ - 如何读取当前连接的显示器 ID?

c - 在 C 中 write 的 printf 等价物是什么?

linux - 如何在不离开当前 shell 的情况下在当前 shell 中间脚本中设置 sudo?

c - 多次运行之间同一程序的不同缓存未命中计数

c - 不使用 "mmap"调用将物理内存映射到用户虚拟地址空间的替代方法

c - 这个 C 函数有什么问题?

c - 使用qsort整理struct的vec(C)

linux - 为什么 make savedefconfig 删除条目?

java - -bash : ./jdk-6u31-linux-i586.bin:无法执行二进制文件