2009-08-28 13 views
3

forkは、呼び出されたプロセスのコピーを作成するために使用されます。 これには通常、execファミリの関数が呼び出されます。 これ以外のforkの使用法はありますか? 私は1つ考えることができます。パイプ機能でIPCを実行する。forkシステムコールのアプリケーション

答えて

0

着信接続をリッスンしている何らかの種類のサーバーがある場合は、着信要求を処理するために子プロセスをforkすることができます(execまたはパイプは必ずしも必要ありません)。

5

もちろんです。プロセスを開始し、データの初期化を行い、複数のワーカーを起動させることは非常に一般的です。それらはすべてアドレス空間で同じデータを持ち、コピーオンライトです。

もう一つ共通のことは、メインプロセスがTCPソケットを受信し、入ってくるすべての接続に対してfork()を実行させることです。そのようにして、既存の接続が並行して処理される間に新しい接続を即座に処理できます。

私は、fork()の後で、両方のプロセスがfork()の前のプロセスにあったすべてのデータにアクセスできることを忘れていると思います。

+0

はいもちろんです。ありがとう。 – Ankur

+1

"フォーク、1つのインスタンスが作業を続けるようにし、2番目のチェックポイントは計算の状態を安定したストレージにします"。 – Vatine

+0

これは、複数のスレッドを使って達成することはできないと思います。なぜなら、新しいリソース(TCPソケット)を割り当てるためには新しいプロセスが必要であり、スレッドは共通のリソースを共有するため、 –

4

フォークのもう1つの使用方法は、親プロセスから切り離すことです(initに戻る、プロセス1)。 pid 1111のbashなどのプロセスが、myserverを起動してp2222を取得すると、1111が親プロセスになります。 2222のフォークを仮定し、その子はp3333を取得します。プロセス2222が終了すると、3333はその親を解放し、新しい親としてinitを取得します。

この戦略は、デーモンを起動したプロセスと親の関係を持たないために、起動時にデーモンによって使用されることがあります。 this answerも参照してください。フォークの

1

A「の使用は、」私は小さなシェルを書かれているFork Bomb

0

を作成することであり、それは特に、配管要素のために、(はい、これはEXEC ..です)フォークでいっぱいでした。 wikipedia page on pipe

関連する問題