0

私は現在、リクエストを受け取り、それらを処理するために新しいプロセスを生成する C++ サーバーに取り組んでいます。これらの子プロセスは、(時々) system(3) への呼び出しを実行して、他のプログラム (私が制御できないサードパーティのもの) を呼び出す必要があります。このサーバーは新しいハードウェア プラットフォームに移植されているため、カーネル 2.4.20 に戻って、複数のシステム間の互換性を維持する必要があります。現在、子 (signal(SIGCHLD, SIG_IGN)) を無視していますが、これは古いカーネルでは問題なく動作しますが、別のハードウェアでサーバー (2.6、3.2) を移植している新しいカーネルでサーバーを実行すると、このシステムコールは失敗し、system(3) は errno を ECHILD に設定します。カーネルの変更点と、子を無視できない場合の適切な処理方法は? (ノート、

4

0 に答える 0