- ベストアンサー
UNIX リターンコード
UNIXを使っていて、リターンコードのことがよく分かりません。 「0」が正常終了、「1」がエラー以外に、「4」や「8」や「16」など どのような時に使うのでしょうか。 また、これらの数字以外にもあったり、数字自体どうやって決まっているのでしょうか。 分かるか方いたら教えてもらいたいです。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
決まりは、そのキックするプログラムやサブルーチンごとに決めることなので、何がどうである。という共通のところは、0の正常終了くらいしかありません。 エラーでも、パラメーターがエラーなのか、読み込むデータがエラーなのか、書き込む場所がエラーなのか、書き込むパーミッションでエラーが出ているのかなど、たくさんのエラーになる要因があります。 それらを、エラーという一つのもので返すのか、細かいエラー内容を返すのかは、そのサブルーチンやキックされるプログラムなどの設計者の考え方になります。 この辺は、UNIXだからどうのというところでもありません。 数字自体は、ビットを使うことが多いですが、必ずそうとは限りません。 ビットで使えば、1、2、4、8、16、32などになる訳です。 これは二進法のビットに相当する訳で、複数の情報を返す時、返り値をビットで区分すれば、一つの返り値から複数のエラー情報などを得られる様になる訳です。 ただ、そうしないで、単に順番に振っていく人もいます。 この辺は、それらの設計者の考えでしかありません。
その他の回答 (4)
- wormhole
- ベストアンサー率28% (1626/5665)
どうやって決まるのかは他の回答者が回答されていますから 私からはプロセスの終了コードにできる値の範囲についてを。 プロセスの終了コードの範囲は、0~255です。 負数や256以上の値は終了コードにはできません。
お礼
ご回答ありがとうございます!
- notnot
- ベストアンサー率47% (4900/10358)
プログラムによって意味づけが異なります。 リターンコードで処理結果の意味を伝える場合だと、正常終了でも非ゼロの値となります。 例えば、grepコマンドだと、 0 文字列が見つかった (正常) 1 文字列が見つからなかった(正常) 2 何らかのエラー また、exprコマンドだと、 0 処理結果がnullでも0でもない(正常) 1 処理結果がnullまたは0(正常)(例えば「expr 2 - 2」の場合) 2 構文エラー 3 その他エラー 数字は、プログラムを書く人が、利用者に便利なようにという観点で決めます。
お礼
ご回答ありがとうございます!
- nan93850673
- ベストアンサー率32% (179/553)
>UNIXを使っていて、リターンコードのことがよく分かりません。 Unixの標準的なコマンドの事を言っているのか、アプリケーションを含んて聞いているのか分かりませんが、アプリの場合 ユーザにエラーの程度を知らせる 0:正常終了 4:ワーニング(軽微なエラーが有ったけど処理できた) 8:エラー(エラーが有ったので処理結果を保証できない) 16:重要なエラー(全く処理できなかった) ユーザにエラー内容を知らせる 100:ファイルのI/Oエラーが発生した 200:ネットワークエラーが発生した 300:DBのアクセスでエラーが発生した 999:上記以外のエラー 複数のエラーが同時に発生する可能性が有る場合、リターンコードを2進数に変換するとビット毎に意味が有る事が解る様する事もある
お礼
ご回答ありがとうございます!
- f272
- ベストアンサー率46% (8477/18147)
コマンドによって意味は異なります。manで確認してください。
お礼
ご回答ありがとうございます!
お礼
ご回答ありがとうございます!