teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

fix

2017/08/09 08:06

投稿

mattn
mattn

スコア5030

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  C や C++ といった言語に関係なく戻り値 0 が正、0 以外の値がエラー扱いというのが一般的な使われ方です。一部 Plan9 の様に数値の終了ステータスを持たない物もあります。
2
2
 
3
- 0 と 0 以外の値を返せるのですが実はそれくらいしか取り決めが無く、人によって引数以上系は -1 にしたり 2 にしたりする人もいます。また物によってはビットマスクで終了時の状態を表すという方法も使われます。fsck コマンドが1例です。
3
+ 0 と 0 以外の値を返せるのですが実はそれくらいしか取り決めが無く、人によって引数異常系は -1 にしたり 2 にしたりする人もいます。また物によってはビットマスクで終了時の状態を表すという方法も使われます。fsck コマンドが1例です。
4
4
 
5
5
  ```
6
6
  0 - No errors

1

fix

2017/08/09 08:06

投稿

mattn
mattn

スコア5030

answer CHANGED
@@ -13,7 +13,7 @@
13
13
  128 - Shared library error
14
14
  ```
15
15
 
16
- fsck の終了ステータスは値を見ればそれがどういう状態で終了したのかがだいたい分かる様になっています。他の方が書いていますがシェルスクリプトでは `set -e` を書いておくと子プロセスの終了ステータスを判定して 0 以外であれば処理を継続しない様になっています。また bash では `$?` で直前に起動したプロセスの終了ステータスを得る事が出来ます。
16
+ fsck の終了ステータスは値を見ればそれがどういう状態で終了したのかがだいたい分かる様になっています。他の方が書いていますがシェルスクリプトでは `set -e` を書いておくと子プロセスの終了ステータスを判定して 0 以外であれば処理を継続しない様になっています。また bash では `$?` で直前に起動したプロセスの終了ステータスを得る事が出来ます。Windows のコマンドプロンプトの場合は `%ERRORLEVEL%` で判定出来ます。
17
17
 
18
18
  プログラミング言語を使ってシステムを作る場合、終了ステータスは「自プロセスを起動した親プロセスに『これ以上処理を継続しないでくれ』と通知する為の手段」ですので、これはおまじないでも魔法でもなんでもなく、当たり前に考慮しないといけない話になります。
19
19