とみたです。

On Wed, 2 Jun 2004 03:50:04 +0900
Masayoshi Takahashi <maki / rubycolor.org> wrote:

> つい先日発売されました、まつもとゆきひろ監修・
> 青木峰郎+後藤裕蔵+高橋征義著の『Rubyレシピブック 268の技』
> (ソフトバンクパブリッシング、ISBN4-7973-2429-5)のp.351に、
> そのものずばりの「デーモンになる」というレシピがあります。

# ああ、買わないとなあ…。268 ってのがビミョー。256 ならキリがよいんだ
# けど…。

> ↓こんな感じです。
> 
>   def daemon
>     return yield if $DEBUG
>     Process.fork{
>       Process.setsid
>       Dir.chdir "/"
>       trap("SIGINT"){ exit! 0 }
>       trap("SIGTERM"){ exit! 0 }
>       # 設定ファイルを読み直すなどのハンドラを設定してもよい
>       trap("SIGHUP"){ exit! 0 }
>       File.open("/dev/null"){|f|
>         STDIN.reopen f
>         STDOUT.reopen f
>         STDERR.reopen f
>       }
>       yield
>     }
>     exit! 0
>   end

STDIN, STDOUT, STDERR の reopen 後は f は余計なので、f.close するべき
なんじゃないかと思ったり…。

ところで、私は $stdin/$stdout/$stderr を使ってるんですが、そうじゃなく
て STDIN/STDOUT/STDERRを使う方が好ましいのでしょうか。

# 実は前から気になってたので、便乗質問。

-- 
とみたまさひろ <tommy / tmtm.org>