fork()
を使用して多数のプロセスを作成するプログラムを作成していますが、同じプログラムに対してexec
関数を呼び出しています(これは教授が要求しています)。Cメインプロセス用のLinuxシグナルハンドラ
CTRL + C(SIGINT)に反応して、離席するかどうかをユーザーに尋ねる必要があります。問題は、シグナルハンドラがすべての子プロセスにも実装されているため、シグナルが送信されるときに、ユーザーはプロセスの数と同じ時間に応答する必要があるということです。
私はCTRL + Cで1回だけユーザーに尋ねたいと思う。
私はどのようなソリューションを実装できますか?
フォーク最初に、後で信号処理を設定しますか?あるいは、子供たちの 'exec'の前に、シグナルハンドラをデフォルトに設定しますか? –
fork()によって生成されたプロセスもfork()されるので、(ほとんど)すべてのプロセスにハンドラがインストールされます。 –
子プロセスの最初のセットは、それらが子プロセスであることを認識します。したがって、最初の「メイン」プロセスとは異なるパスを継続します。彼らがそうでなければ、あなたのデザインに欠陥があると言えます。 –