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)の返っていく先が
そもそも解ってなかったみたいです。
「終了コードを返す」という事の意味がやっと分かりました。
あーなんかすっきりした。
本当にありがとうございました!!
[上に]
[前に]
[次に]