如何在 "almost" 运行 内存不足之前继续分叉进程

How to keep forking a process until I "almost" run out of memory

我想一直 fork 一个进程,直到我几乎没有内存。我如何知道我可以在不崩溃的情况下分叉进程多少次?

这是计算估算值的程序(使用 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;
}

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