私のアプリケーションは する必要がありますがfork()
、時々 (約 1/10 回) がfork
子に返されません。私のコードの分岐セクションは次と同等です。
void myFunc()
{
pid_t pid = fork();
if( pid == -1 )
{
printf( "Error! %d\n", errno );
exit(1);
}
else if( pid == 0 )
{
printf( "In the child\n" );
_Exit(0);
}
else
{
printf( "In the parent\n" );
int status;
if( waitpid( pid, &status, 0 ) == pid )
{
// check status
}
printf( "Finished waitpid\n" );
}
}
ほとんどの場合、出力が表示されますが:
In the parent
In the child
Finished waitpid
時々私はちょうど見る
In the parent
現在、これは、このプラットフォームではメモリが非常に制限されているためであると思われるため、親アプリケーションでマークを超えてしまい、fork
. ただし、この状況では、への呼び出しがfork()
-1 を返し、エラー状態に陥ることが予想されます。
瞬間的にメモリが不足している可能性はありますが、それfork()
については教えてくれませんか?