回答編集履歴
2
修正漏れ
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
プログラムの中にはプログラムの内部でプログラムを実行する(Cであれば`system`関数等)場合があります。呼び出す側のプロセスを親プロセス、呼び出される側のプロセスを子プロセスと言います。あるプログラムAが実行され、そのプロセスが動作中に、別のプログラムBを内部で実行したとしましょう。その時、プロセスは親子関係にあり、親プロセスではプログラムAが、子プロセスではプログラムBが動作することになります。プログラムBのコードを全て実行し、子プロセスが終了したとします。そのとき、子プロセスは親プロセスに終了
|
5
|
+
プログラムの中にはプログラムの内部でプログラムを実行する(Cであれば`system`関数等)場合があります。呼び出す側のプロセスを親プロセス、呼び出される側のプロセスを子プロセスと言います。あるプログラムAが実行され、そのプロセスが動作中に、別のプログラムBを内部で実行したとしましょう。その時、プロセスは親子関係にあり、親プロセスではプログラムAが、子プロセスではプログラムBが動作することになります。プログラムBのコードを全て実行し、子プロセスが終了したとします。そのとき、子プロセスは親プロセスに終了ステータスを渡します。プログラムAではその終了ステータスによって動作を分岐させることができます。
|
6
6
|
|
7
7
|
|
8
8
|
|
@@ -24,11 +24,11 @@
|
|
24
24
|
|
25
25
|
1. 成功終了を表す終了ステータスが0以外の環境(存在するかは不明)で、`return 0;`とした場合は、異常終了になるのですか?
|
26
26
|
|
27
|
-
いいえ、0または`EXIT_SUCCESS`(成功終了を表すマクロ、0とは限りない)を`main`でreturn(またはexit関数に渡す)した場合、その処理系における成功終了を表す終了
|
27
|
+
いいえ、0または`EXIT_SUCCESS`(成功終了を表すマクロ、0とは限りない)を`main`でreturn(またはexit関数に渡す)した場合、その処理系における成功終了を表す終了ステータスになります。`main`の`return 0;`はどのような状況においても、成功終了を意味します。
|
28
28
|
|
29
29
|
2. 0以外は異常終了なのですか?
|
30
30
|
|
31
|
-
Cの仕様で定義されているのは`EXIT_FAILURE`の場合に失敗終了を意味するということだけです。それ以外は処理依存になります。ただし、ほとんどの処理系では、0-255の範囲ではそのまま終了
|
31
|
+
Cの仕様で定義されているのは`EXIT_FAILURE`の場合に失敗終了を意味するということだけです。それ以外は処理依存になります。ただし、ほとんどの処理系では、0-255の範囲ではそのまま終了ステータスになり、0以外は異常とみなされます。
|
32
32
|
|
33
33
|
3. `return 0;`を省略しましたが、正常終了しました。バグですか?
|
34
34
|
|
1
終了コードになっていたのを修正
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
この終了
|
9
|
+
この終了ステータスは整数値(とり得る範囲は環境によって異なる)で、ほとんどの環境では0が成功終了(正常終了)です。Cでは、この終了ステータスを簡単に返せるようにと、`main`関数の戻り値によって、どんな終了ステータスで終了したかを選べるようにしています。Cの中でも、0が成功終了を意味しており、`return 0;`となっている場合は、そのプロセスは成功終了を意味する終了ステータスを渡すようになっています。
|
10
10
|
|
11
11
|
|
12
12
|
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
Q
|
21
|
+
FAQ
|
22
22
|
|
23
23
|
|
24
24
|
|