1

私のアプリケーションは する必要がありますが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()については教えてくれませんか?

4

0 に答える 0