5

3 つのアプリケーションを実行する Perl スクリプトがあります。それらはすべて異なる終了コードステータスを持っています。

最初のアプリケーション終了コードのステータスは 1 です。アプリケーションは問題なく正常に終了しました。(成功)

2 つ目のアプリケーション終了コードのステータスは 99 です。それでも、アプリケーションは問題なく正常に終了しました。(成功)

最後に、3 つ目のアプリケーション終了コードのステータスは 0 です。1 つ目と 2 つ目も同様に、アプリケーションは問題なく正常に終了しました。(成功)

注: 既に終了コード ステータスを 8 ビット右にシフトしています。

問題は、正常に実行された場合、終了コードのステータスは常に 0 に戻るということですか?

厳しいコメントはしないでください、私はただ混乱しました。ご意見をお聞かせください。

4

2 に答える 2

8

戻りステータスは、子プロセスによって選択されます。通常、操作が成功する場合はゼロですが、その慣習を強制するものは何もありません。

プロセスが、さまざまな形式の成功を示す情報リターン ステータスを返すことも可能です。たとえば、ディレクトリ内のすべてのファイルを変更したプログラムは、変更するファイルがないことを示すためにゼロ以外の値を返す場合があります。

アプリケーションのドキュメントをチェックして、返される可能性のある値について何か言及されているかどうかを確認する必要があります。何も見つからない場合は、成功を示す値を経験的に判断する必要があります。

于 2012-03-23T07:06:08.300 に答える
4

ほとんどのオペレーティング システム環境では、成功した終了コードとして 0 をサポートし、その他の値は何らかのステータスを示します。通常か例外かは、プログラムごとに個別に文書化されています。

単純な MSDOS でさえ、バッチ ファイルが特定のエラー レベルに反応して別のことを行うための優れたサポートを提供します。

ゼロ以外の戻りステータスに対してデフォルトで強力な反応を示す環境の 1 つに、VMS/OpenVMS オペレーティング システム ファミリがあります。アプリケーションがそこで実行される可能性がある場合は、標準に従ってください。

于 2012-03-23T07:16:38.507 に答える