In message <200402200121.i1K1LGGX011171 / sharui.nakada.niregi.kanuma.tochigi.jp>
	on Fri, 20 Feb 2004 10:21:16 +0900,
	nobu.nakada / nifty.ne.jp wrote:
> > > ありません。setsid(2)が有効なプラットフォームならfork(2)もある
> > > でしょうから、fork {Process.setsid; exec(*cmd)} でやって下さい。
> > あぁ、fork()がない世界を対象ということなのでしょうか。
> 
> そういう世界でも、非同期実行はできるものはありますから。
納得です。

> > (簡易版ということではProcess.daemon とかあると嬉しいのでしょうか?)
> 
> どういう風に使うんでしょうか。 Process.daemon だけでforkして
こっちです。daemon(3)を想定しています。

	http://netbsd.gw.com/cgi-bin/man-cgi?daemon+3

同ライブラリ関数で行っている内容は、

	1. fork()を実行
	2. fork()できたら親のプロセスは _exit(0)
	3. 子のプロセスは、
		3.1 setsid()を実行
		3.2 引数nochdirが0でないなら、/ にchdir()
		3.3 引数nocloseが0でないなら、/dev/null をオープンして、
		    標準入力、出力、エラー出力を置き換え

といったことです。1.や3.1が失敗すると、エラーで戻ります。

> daemon状態? それとも Process.daemon {} でブロックの中だけ?
daemon状態になったものは戻ってこれませんので。

-- 
神戸 隆博(かんべ たかひろ)		at 仕事場