From: KOSAKI Motohiro Date: 2010-03-30T06:41:23+09:00 Subject: [ruby-dev:40834] Re: Process.daemon() returns -1 on failure ifndef HAVE_DAEMON 2010年3月29日19:52 Akinori MUSHA : >  Process.daemon() 失敗時の挙動が、 HAVE_DAEMON 定義時と非定義時 > とで異なっています。後者の場合も、 -1 を返すのではなく errno に > 基づいた例外を上げるべきだと思いますがどうでしょう。 失敗時の挙動を合わせるというコンセプトは賛成ですが、rb_fork()のように複数の システムコールを呼ぶ関数に対してrb_sys_fail()を使うのは嫌かも。 理由はerrnoを見ても失敗している原因をまったく伝えていないと考えるからです。 一つ質問なのですが、この例外はスクリプト側でどういう処理を期待していますか? > static VALUE > @@ -4561,7 +4562,7 @@ proc_daemon(int argc, VALUE *argv) > #elif defined(HAVE_FORK) > switch (rb_fork(0, 0, 0, Qnil)) { > case -1: > - return INT2FIX(-1); > + rb_sys_fail("daemon"); > case 0: > break; > default: > @@ -4573,7 +4574,7 @@ proc_daemon(int argc, VALUE *argv) > /* must not be process-leader */ > switch (rb_fork(0, 0, 0, Qnil)) { > case -1: > - return INT2FIX(-1); > + rb_sys_fail("daemon"); > case 0: > break; > default: