質問: オープンソースを見るとforkしていないものもあったように思います。 forkするメリットとデメリットを教えていただけると助かります。
回答: 既にコメントついていますが、一般的に 「サーバソフト」と呼ばれるものは `fork` するように作られている 「クライアントソフト」と呼ばれるものは `fork` しないで作られている ものが多いと(個人的に)思います。 daemon として動作させる前提のソフトは `fork` することが必須です。 `fork` するメリット ============= プロセスが独立します。親だけでなく同じプロセスを親に持つ兄弟たちとも独立します。 プロセスは OS レベルで保護されるのでサーバソフト自分自身のバグなどがあっても ・異常終了するのは自分だけで兄弟たちを巻き込みません(サービスが安定します) ・兄弟たちに自分の情報を漏らしにくくなります(セキュリティ保護が向上します) ということでサーバソフト的には `fork` することにメリットがあります。 `fork` するデメリット ============== ・ `fork` しない場合より余計に資源を使います(メモリ、ハンドルなど) ・プログラムが `fork`/`exec` するので1手間増えます (`setuid`/`setgid` などを伴えばもう1手間2手間) ・デバッガで追いにくくなります(異プロセスをデバッグする必要が生じます) ということでクライアントソフト的にはわざわざ `fork` する理由がほとんどありません。 なのでプログラムの用途・目的に応じて使いわけるだけのことです。