exit(1)ってなんですか?

[上に] [前に] [次に]
TAKI [E-Mail] 1999/07/09(金) 03:05:54
はじめて質問します。よろしくお願いします。
フリーのCGIを参考にしてPerlを勉強しているのですが、
ここのwwwcount.cgiのソースの中に
exit(0);
exit(1);
の2通りの記述があります。
この二つって何が違うんですか?
とほほのperl入門(リファレンス編)にある
>exit(expr)
>exit expr
>perlスクリプトを終了する。終了コードとしてexprの値を返す。省略時は0を返す。
の「終了コード」の意味が分かりません。
exit(1);の (1) にはどんな意味があって
どんなときに (1) を指定する必要があるのでしょうか?

B-Cus 1999/07/10(土) 01:38:42
ちょっとここらへんあやふやなんで、間違ってたら補足お願い。

普通exitの値は、プログラムが正常に終了したかどうかを親プロセスが
判別するために使われます。

プログラムhogeを正常終了時は0、異常終了時は非0を返すように設計しておくと、
スクリプト中で
 system("hoge");
 if ( $?>>8 != 0 ){  # perlだと512で割る必要がある。そういうもんだと思ってください。
  print "hogehoge failed.\n"
 }
などと書けるわけですな。

ただし、CGIの場合はexitでどんな値を返そうが、親プロセス(WWWサーバ)は
その値を参照しないので、意味はないです。しかし exit(1)と書いてあると
ソースを読む人が「ここに処理がくると異常終了なんだな」とわかりやすいですね。

TAKI 1999/07/10(土) 03:46:25
[[解決]]
B-Cusさん、ご回答ありがとうございます。
そっかぁCGIってサーバが親プロセスで
CGIは子プロセスだったんですね。
よく考えてみればそうですよね。気づきませんでした。
exit(1)の、(1)の返っていく先が
そもそも解ってなかったみたいです。
「終了コードを返す」という事の意味がやっと分かりました。
あーなんかすっきりした。
本当にありがとうございました!!

[上に] [前に] [次に]