如何继续派生一个进程,直到我“几乎”用尽内存

时间:2019-05-11 10:44:58

标签: c fork

我想一直派生一个进程,直到我快要用完内存为止。我如何知道我可以分叉一个进程而不会崩溃的次数?

1 个答案:

答案 0 :(得分:0)

以下是用于计算估算值的程序(使用Linux API):

#include <sys/resource.h>
#include <sys/sysinfo.h>
#include <stdio.h>

unsigned long maxmem() {
    struct sysinfo info;
    if (sysinfo(&info) < 0)
        return 0;
    return info.freeram;
}

long getmem(void) {
    struct rusage r_usage;
    getrusage(RUSAGE_SELF,&r_usage);
    return r_usage.ru_maxrss;
}

int main() {
    printf("Can fork %d times. Mfm: %d, upp: %d\n", maxmem() / 1024 / getmem(), maxmem() / 1024, getmem());
    return 0;
}

请注意,这只是一个估计,当达到内存使用高峰时,您可能需要在应用程序中运行此代码。