From: nobu.nakada@... Date: 2003-10-15T11:30:58+09:00 Subject: [ruby-list:38569] Re: exit status on exit! なかだです。 At Wed, 15 Oct 2003 11:07:12 +0900, Yukihiro Matsumoto wrote: > ||ANSI-Cかどうかわかんないけど、VMSは確かEXIT_SUCCESSは1で、 > ||EXIT_FAILUREは0です。という意味でもEXIT_FAILUREにすべきか。 > | > |ということでexitやexit!のデフォルトはEXIT_SUCCESSになったのに、 > |スクリプトの最後で終了するときの値が0のままになってるということ > |です。 > > 十分に理解している自信が無いのですが、こういうこと? > > --- eval.c 14 Oct 2003 10:09:39 -0000 1.564 > +++ eval.c 15 Oct 2003 02:05:31 -0000 > @@ -1334,3 +1334,3 @@ ruby_finalize() ruby_finalize()はruby_finalize_0()の戻り値を捨てているので、何 を渡しても関係ないと思います。 ほとんどの環境(EXIT_SUCCESS == 0)では現状とほぼ変わりないはずで すが、そうでない環境ではexit(ruby_nerrs)もまずいような気がして 来ました。 しかし、ruby_run()が2回呼ばれることはないはずなので、exがstatic である必要もないような。 > でも、それだとhttp://sheepman.parfait.ne.jp/20031014.html#p02 > が説明できないような。 exit(1)としても常にEXIT_SUCCESSだったので誤動作した、ということ かと思ったのですが。違うのかな。eval.cを1.564にしたら誤動作した のか誤動作しなくなったのか、どっちでしょう。 Index: eval.c =================================================================== RCS file: /cvs/ruby/src/ruby/eval.c,v retrieving revision 1.564 diff -u -2 -p -r1.564 eval.c --- eval.c 14 Oct 2003 10:09:39 -0000 1.564 +++ eval.c 15 Oct 2003 02:26:32 -0000 @@ -1389,9 +1389,9 @@ ruby_run() { int state; - static int ex; + int ex = EXIT_SUCCESS; - if (ruby_nerrs > 0) exit(ruby_nerrs); + if (ruby_nerrs > 0) exit(EXIT_FAILURE); state = ruby_exec(); - if (state && !ex) ex = state; + if (state) ex = EXIT_FAILURE; ruby_stop(ex); } -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦