タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

daemonに関するkohkimakimotoのブックマーク (2)

  • 親プロセスは2度死ぬ - デーモン化に使うダブルforkの謎 - シリコンの谷のゾンビ

    デーモンプロセスを作る場合には,教科書によく書かれている2度forkは不要ではないか? ということを以前の記事に書いた. [c][unix]UNIXネットワークプログラミングのお勉強 (2) デーモンの作り方 - 睡眠不足?! 確かにBSDのdaemon(3) のコードでは,forkは1回しか呼んでいない. 「きっとプレセスがセッションリーダだと不都合があるのだろう.でもなぜ?」 というのがopen questionだった. それに対する答えを「詳解UNIXプログラミング」[1] に見つけた. SVR4においては,この時点でforkを再度呼び,親を終了することを勧める人がいる. 2番目の子がデーモンとして動作する.これは,デーモンはセッションリーダではなく, SVR4の規則 (9.6節) から,セッションリーダでなければ制御端末を取得できない,ということを保証する. あるいは,制御端末を取

    親プロセスは2度死ぬ - デーモン化に使うダブルforkの謎 - シリコンの谷のゾンビ
  • [c][unix]UNIXネットワークプログラミングのお勉強 (2) デーモンの作り方 - シリコンの谷のゾンビ

    一晩寝てからデーモンプロセスの作り方を眺めてとても簡単だということに気がついた.自分メモ. デーモンへの道のり fork()して子プロセス (次郎) を生成.親プロセス (太郎) を終了する 次郎プロセスでsetsid()する 次郎プロセスはセッショングループリーダになる この時点で次郎プロセスは制御端末を持たなくなる 次郎プロセスがfork()して孫プロセス (三郎) 生成.次郎プロセス終了 chdir("/")する. shutdown時のumount処理に迷惑をかけないため 標準入力,標準出力,標準エラー出力を閉じる サンプルコード 比較を行うために3つのプログラムを書いた. daemon 全部行う nondaemon 2度目のfork()をしない nondaemon2 setsid()しない #include <stdio.h> #include <stdlib.h> #includ

    [c][unix]UNIXネットワークプログラミングのお勉強 (2) デーモンの作り方 - シリコンの谷のゾンビ
  • 1