1. ホーム
  2. c

[解決済み] 1つの親プロセスから2つのプロセスを作成する方法

2022-02-07 23:39:02

質問事項

fork()を使う必要があることは分かっていますが、これは単に1つの子プロセスを作成するだけです。子プロセスの中から再度forkを呼び出せばいいのでしょうか?また、シグナルやパイプで通信する必要があるのですが、どちらが実装しやすいでしょうか?

どのように解決するのですか?

2つ目のプロセスを作成するには fork() 親か子のどちらかで (ただし両方は不可!) もう一度。 どちらを選ぶかは、このプロセスを元の親の子にするか、最初の子プロセスの子にするかによって決まります (元の親の子にするのが普通です)。

パイプを使った通信は、シグナルを使うよりもずっとシンプルで信頼性が高いです。 pipe() , close() , read() , write()select() が、ここでの重要な機能です。


例えば、親プロセスに2つの子プロセスを作らせるには、次のようにします。

pid_t child_a, child_b;

child_a = fork();

if (child_a == 0) {
    /* Child A code */
} else {
    child_b = fork();

    if (child_b == 0) {
        /* Child B code */
    } else {
        /* Parent Code */
    }
}