style(9)
によれば、プログラムを終了するときに失敗の状態を示すために
任意の値を使って
exit(3)
を呼び出すのは、よいやり方ではありません。代りに、
sysexits
からの事前に定義された終了コードを使うべきであり、そうすれば
プロセスの呼び出し者はソースコードを調べなくても失敗クラスをおおよそ
推定することができます。
無事に終了したことは、常にステータス
0 または
EX_OK
によって
示されます。任意のプログラムが常に返す可能性のあるその他の終了ステータスと
衝突する可能性を減らすために、エラー番号は
EX__BASE
から始まります。コード
の意味は、おおよそ次に示す通りです:
EX_USAGE (64)
|
コマンドが不正に使用されました。例えば、引数の
数の誤り、誤ったフラグ、パラメータの誤った構文など。
|
EX_DATAERR (65)
|
入力データがどこかで不正です。これは、
ユーザデータのみに使用する必要があり、システムファイルには
使用すべきではありません。
|
EX_NOINPUT (66)
|
入力ファイル (システムファイルではなく) が
存在しないか、または読み取り可能ではありません。これには、メーラに
対する
"amp;No 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)
|
何かがコンフィギュレーションされていない、または
コンフィギュレーションが間違っている状態にあります。
|
シンボリックな表現のエラーに対応する数値が、参照を容易にするために
括弧内に示してあります。