こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

UNIX リターンコード

UNIXを使っていて、リターンコードのことがよく分かりません。
「0」が正常終了、「1」がエラー以外に、「4」や「8」や「16」など
どのような時に使うのでしょうか。
また、これらの数字以外にもあったり、数字自体どうやって決まっているのでしょうか。

分かるか方いたら教えてもらいたいです。
よろしくお願いします。

投稿日時 - 2018-05-09 15:17:07

QNo.9496746

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

決まりは、そのキックするプログラムやサブルーチンごとに決めることなので、何がどうである。という共通のところは、0の正常終了くらいしかありません。

エラーでも、パラメーターがエラーなのか、読み込むデータがエラーなのか、書き込む場所がエラーなのか、書き込むパーミッションでエラーが出ているのかなど、たくさんのエラーになる要因があります。

それらを、エラーという一つのもので返すのか、細かいエラー内容を返すのかは、そのサブルーチンやキックされるプログラムなどの設計者の考え方になります。

この辺は、UNIXだからどうのというところでもありません。

数字自体は、ビットを使うことが多いですが、必ずそうとは限りません。
ビットで使えば、1、2、4、8、16、32などになる訳です。
これは二進法のビットに相当する訳で、複数の情報を返す時、返り値をビットで区分すれば、一つの返り値から複数のエラー情報などを得られる様になる訳です。

ただ、そうしないで、単に順番に振っていく人もいます。
この辺は、それらの設計者の考えでしかありません。

投稿日時 - 2018-06-03 11:14:28

ANo.4

どうやって決まるのかは他の回答者が回答されていますから
私からはプロセスの終了コードにできる値の範囲についてを。
プロセスの終了コードの範囲は、0~255です。
負数や256以上の値は終了コードにはできません。

投稿日時 - 2018-05-09 22:02:32

ANo.3

プログラムによって意味づけが異なります。
リターンコードで処理結果の意味を伝える場合だと、正常終了でも非ゼロの値となります。
例えば、grepコマンドだと、
0 文字列が見つかった (正常)
1 文字列が見つからなかった(正常)
2 何らかのエラー

また、exprコマンドだと、
0 処理結果がnullでも0でもない(正常)
1 処理結果がnullまたは0(正常)(例えば「expr 2 - 2」の場合)
2 構文エラー
3 その他エラー

数字は、プログラムを書く人が、利用者に便利なようにという観点で決めます。

投稿日時 - 2018-05-09 21:31:14

ANo.2

>UNIXを使っていて、リターンコードのことがよく分かりません。

Unixの標準的なコマンドの事を言っているのか、アプリケーションを含んて聞いているのか分かりませんが、アプリの場合

ユーザにエラーの程度を知らせる
0:正常終了
4:ワーニング(軽微なエラーが有ったけど処理できた)
8:エラー(エラーが有ったので処理結果を保証できない)
16:重要なエラー(全く処理できなかった)

ユーザにエラー内容を知らせる
100:ファイルのI/Oエラーが発生した
200:ネットワークエラーが発生した
300:DBのアクセスでエラーが発生した
999:上記以外のエラー

複数のエラーが同時に発生する可能性が有る場合、リターンコードを2進数に変換するとビット毎に意味が有る事が解る様する事もある

投稿日時 - 2018-05-09 20:17:14

ANo.1

コマンドによって意味は異なります。manで確認してください。

投稿日時 - 2018-05-09 15:46:43

あなたにオススメの質問