我想一直派生一个进程,直到我快要用完内存为止。我如何知道我可以分叉一个进程而不会崩溃的次数?
答案 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;
}
请注意,这只是一个估计,当达到内存使用高峰时,您可能需要在应用程序中运行此代码。