我有一个在IRIX上运行的应用程序,它使用m_fork()来创建许多进程。 Source code.
当我用3个叉子运行应用程序时,一切都按预期工作。当我要求四个叉子时,它无法解决“ENOMEM”错误:
bash-2.05$ ./hello 3
Process spawn limit is 8
Hello world from process 1
Hello world from process 2
Hello world from process 0
2nd line: Hello world from process 1
2nd line: Hello world from process 2
2nd line: Hello world from process 0
bash-2.05$ ./hello 4
Process spawn limit is 8
m_fork() did not work
我知道这是一个内存分配问题,因为当我在malloc(900000000);
之前投放m_fork()
时,一切都按预期工作。
虽然这确实解决了问题,但它不是一个合适的解决方案,因为它只是一个任意大的数字。如何为forks动态分配足够的内存?
e:我想在这里得到解答的核心问题是,“我怎样才能为分配分配足够的内存?”