[#39699] デーモン・プロセスの作り方 — "Mitsuyasu Ichimura" <mitsuyasu@...>
こんにちは、市村と申します。
27 messages
2004/06/01
[#39702] Re: デーモン・プロセスの作り方
— Hidetoshi NAGAI <nagai@...>
2004/06/01
永井@知能.九工大です.
[#39710] Re: デーモン・プロセスの作り方
— Masayoshi Takahashi <maki@...>
2004/06/01
高橋征義です。宣伝モードです(_o_)
[#39711] Re: デーモン・プロセスの作り方
— nobu.nakada@...
2004/06/01
なかだです。
[#39721] Re: デーモン・プロセスの作り方
— Masayoshi Takahashi <maki@...>
2004/06/02
高橋征義です。
[#39725] Re: デーモン・プロセスの作り方
— OHARA Shigeki <os@...>
2004/06/03
大原です。
[#39732] Re: デーモン・プロセスの作り方
— Masayoshi Takahashi <maki@...>
2004/06/03
高橋征義です。
[#39757] MacのIEだとcgi.rbのmultipartがおかしいときがある — "fuji@..." <fuji@...>
藤岡と言います。
9 messages
2004/06/15
[#39758] Re: MacのIEだとcgi.rbのmultipartがおかしいときがある
— Wataru Gotoh <gotow@...>
2004/06/15
後藤@北の方といいます。
[#39768] cygwin版 ruby1.8でPStore使用時のエラー — ikezawa@... (ikezawa)
池澤と申します。
5 messages
2004/06/19
[#39775] Hiki の脆弱性に関する注意喚起 — Kazuhiko <kazuhiko@...>
かずひこです。
7 messages
2004/06/20
[#39777] Re: Hiki の脆弱性に関する注意喚起
— SASADA Koichi <ko1@...>
2004/06/21
Kazuhiko <kazuhiko@fdiary.net> wrote :
[ruby-list:39734] Re: デーモン・プロセスの作り方
From:
GOTOU Yuuzou <gotoyuzo@...>
Date:
2004-06-03 19:00:51 UTC
List:
ruby-list #39734
In message <20040603224656.0575a41b.tommy@tmtm.org>,
`とみたまさひろ <tommy@tmtm.org>' wrote:
> # ああ、買わないとなあ…。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 を使ってるんですが、そうじゃなく
> て STDIN/STDOUT/STDERRを使う方が好ましいのでしょうか。
まず、デーモンプロセスの入出力の扱いについて、神戸さんが
[ruby-list:39717]でおっしゃっていることに全面的に同意します。
IO#reopenは、IOが保持しているディスクリプタを同じ値を保った
まま開き直します。上記のコードではforkの後にexecやsystemを呼
んだ場合にも標準入出力が/dev/nullを向いていることを期待して
います。
一方、$stdin/$stdout/$stderrはgets、print、warnなど、Rubyレ
ベルでのデフォルトの入出力先を「代入することによって」切替え
るためのインターフェースです。これらが、すでに置き替えられて
いる場合は、reopenしてもプロセスのレベルで標準入出力が切り替
わるわけではありませんから、ここではSTDIN/STDOUT/STDERRを使
うのが好ましいと考えています。
--
ごとうゆうぞう