m_fork()を使用して多数のプロセスを作成するアプリケーションを IRIX で実行しています。ソースコード。
3 つのフォークでアプリケーションを実行すると、すべてが期待どおりに機能します。4 つのフォークを要求すると、「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: ここで答えを得ようとしている中心的な質問は、「フォークに十分なメモリを割り当てるにはどうすればよいですか?」ということです。