我有一个在 IRIX 上运行的应用程序,它使用m_fork()创建多个进程。源代码。
当我使用 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()
,一切都按预期工作。
虽然这确实解决了问题,但它不是一个合适的解决方案,因为它只是一个任意大的数字。如何为分叉动态分配足够的内存?
e:我在这里试图回答的核心问题是,“我怎样才能为分叉分配足够的内存?”