SYSEXITS(3)

名称
sysexits - プログラムの望ましい終了コード

書式
#include <sysexits.h>

解説
style(9) によれば、プログラムを終了するときに失敗の状態を示すために 任意の値を使って exit(3) を呼び出すのは、よいやり方ではありません。代りに、 sysexits からの事前に定義された終了コードを使うべきであり、そうすれば プロセスの呼び出し者はソースコードを調べなくても失敗クラスをおおよそ 推定することができます。

無事に終了したことは、常にステータス 0 または EX_OK によって 示されます。任意のプログラムが常に返す可能性のあるその他の終了ステータスと 衝突する可能性を減らすために、エラー番号は EX__BASE から始まります。コード の意味は、おおよそ次に示す通りです：

EX_USAGE (64)
    コマンドが不正に使用されました。例えば、引数の 数の誤り、誤ったフラグ、パラメータの誤った構文など。

EX_DATAERR (65)
    入力データがどこかで不正です。これは、 ユーザデータのみに使用する必要があり、システムファイルには 使用すべきではありません。

EX_NOINPUT (66)
    入力ファイル (システムファイルではなく) が 存在しないか、または読み取り可能ではありません。これには、メーラーに 対する “message” のようなエラーも含まれます (このようなエラーまで 捕えようとする場合)。

EX_NOUSER (67)
    ユーザが指定したものは存在しません。これは、 メールアドレスやリモートログインに使用することができます。

EX_NOHOST (68)
    ホストが指定したものは存在しません。これは、 メールアドレスやネットワークリクエストに使用することができます。

EX_UNAVAILABLE (69)
    そのサービスは利用できません。これは、 サポートプログラムやファイルが存在しない場合に起きます。これは、 何かやりたいことができないで、その理由が分からないときの キャッチコールメッセージとして使うこともできます。

EX_SOFTWARE (70)
    内部ソフトウェアエラーが検出されました。これは、 できるだけオペレーティングシステム関連ではないエラーに限る必要があります。

EX_OSERR (71)
    オペレーティングシステムエラーが検出されました。 これは、 “分岐できない、” “パイプを作成できない” などのようなエラーに 使うよう意図されています。これには、 passwd ファイルに存在しないユーザに 対して getuid を返すようなものも含まれます。

EX_OSFILE (72)
    システムファイルのどれか (例えば、 /etc/passwd 、 /var/run/utmp など) が存在しないか、開けないか、または何らかの エラー (例えば、構文エラー) があります。

EX_CANTCREAT (73)
    (ユーザ指定の) 出力ファイルが作成できません。

EX_IOERR (74)
    いずれかのファイルに対して I/O 操作中にエラーが起きました。

EX_TEMPFAIL (75)
    一時的な失敗で、本当のエラーではないことを 示します。 sendmail では、これはメーラーが (例えば) 接続を確立できず、 リクエストは後で再試行する必要があることを意味します。

EX_PROTOCOL (76)
    リモートシステムがプロトコル交換の 間に「可能でない」何かを返しました。

EX_NOPERM (77)
    その操作を実行するために十分な許可を 持っていません。これは、ファイルシステムの問題のためではなく、より高い レベルの許可のために意図されています。ファイルシステムに対しては、 EX_NOINPUT または EX_CANTCREAT を使用すべきです。

EX_CONFIG (78)
    何かがコンフィグレーションされていない、または コンフィグレーションが間違っている状態にあります。

シンボリックな表現のエラーに対応する数値が、参照を容易にするために 括弧内に示してあります。

参照
exit(3), style(9)

歴史
sysexits ファイルは、 4.3BSD 以降のどこかで現れました。

作者
このマニュアルページは、 <sysexits.h> の中のコメント以後に Jörg Wunsch によって書かれました。

バグ
適切な終了値の選択が、しばしばあいまいになります。