No.5ベストアンサー
- 回答日時:
#3です。
一点書き忘れました。初心者向きの話題ではないのですが...
main関数を再帰的に呼び出した場合、最初のmainからreturnする場合を除いて、返却値をどう扱うかは自分で決めることになります。
たとえば、
int main(int argc, char *argv[])
{
if (argc > 0)
{
while (main(0, NULL) != 0);
return 0;
}
/* 何らかの処理 */
}
のような書き方をすれば、mainが0以外を返すと再度呼び出されることになります。
No.4
- 回答日時:
return文が実行されると、呼び出し元にその値を渡します。
main()の呼び出し元は、一般にはOSになるのでOSがその値を受け取ります。
普通は、0が返って来れば正常終了、それ以外の値であれば異常終了と判断されます。
※※ 例 ※※
1. ファイルメインテナmakeを使用した場合。
(1) makeから子プロセスとしてgcc等が呼び出される。
(2) gccがソースファイルのコンパイルでエラーを見つけたらそのレベルによって1以上の値を返す。
(3) makeは、gccの返却値が0でないのでコンパイルに失敗したことを知ることが出来る。
2. shellスクリプトを使用する。
(1) shellスクリプト内でcpを使用したとする。
(2) cpで指定したファイルが無かったら、cpはエラーを返す。
(3) その値をshellスクリプトで判断し、エラー処理を行なう。
> return 0 の0を変えると、プログラムが終了した後、もう一度起動する
それは、値を返された側がどうするかによって決まります。
普通は、終了したらそのままです。
No.3
- 回答日時:
> main文の最後に書くreturnはreturn 0 の0を変えると、プログラムが終了した後、もう一度起動するみたいな話を聞いたことがあります。
おそらくガセ情報です。もっとも、終了処理として具体的に何を行うかは処理系定義なので、再起動しても悪くはありませんが...
mainからの返却値は、プログラムがどんな状態で終了したかを意味します。それが具体的にどのように解釈されるかは処理系定義ですが、0は必ず成功を意味します。また、<stdlib.h>で定義されるEXIT_FAILUREを返せば失敗を意味します。これらの場合も、成功した場合や失敗した場合にどう振舞うかは、やはり処理系定義です。
ちなみに、mainは「文」ではなく「関数」です。
この回答へのお礼
お礼日時:2006/02/11 10:44
ありがとうございます。
ガセ情報ということが分かっただけでもよかったです。
また、詳しい説明もありがとうございました。
mainは文でなく関数ですね、当たり前ですねw
No.2
- 回答日時:
はあ?別にmainから返すreternの値に意味はありませんよ。
呼び出したプロセスがその返ってきた値をみて制御することはあるけど…どこから聞いたのでしょうか?
No.1
- 回答日時:
main()ということで書くと、普通そのプログラム(実行形式)を起動したOSのカーネルなり、バッチファイル等に返却値は返ります。
return値を変えると
>プログラムが終了した後、もう一度起動するみたいな話を聞いたことがあります。
とすることもバッチやシェル内なら可能でしょうけど、カーネルの標準機能にその様な事は無いでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 変数のスコープ 5 2023/05/27 17:50
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
- C言語・C++・C# c言語 5 2023/04/27 13:20
- C言語・C++・C# プログラムの時、フローチャートはどうなりますか?図でお願いします。 int main(void) { 1 2022/10/01 22:45
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
shell関数について
-
VBでExcelが起動されているか知...
-
VB6 二重起動確実防止について
-
ラズパイ3でsocket接続できない。
-
CGIでinit.dで起動したプロセス...
-
ソフトのインストール場所って...
-
Macの手書き漢字入力ツールにつ...
-
exeファイルの実行結果をテキス...
-
誰かにサーバにあるデータを消...
-
ご教授願います PC初心者です。...
-
CPUとOS の違いは?
-
PC/AT互換機は、ほとんどのPCの...
-
Windows95の盛り上がりぶりは何...
-
aptでインストールしたプログラ...
-
Win7でコンピュータ名変更を自動で
-
Sendmail のログの見方について
-
デバッグ停止中 一つ戻る
-
ある特定のフォルダの中に、2つ...
-
今から始めるならどのLINUX?
-
USBオーディアダプタとオーディ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチスクリプト処理でエラー...
-
バッチファイルで多重起動を防ぐ
-
VBでExcelが起動されているか知...
-
Linux環境変数設定(putenv?se...
-
コンソールアプリの起動結果待...
-
MySQLへのDB::connectで、faile...
-
VB6 二重起動確実防止について
-
「応答なし」の状態を監視する方法
-
_access関数が EACCES エラーと...
-
shell関数について
-
コンソールアプリケーションの...
-
仮想メモリ増加
-
CreateProcessでコンソールアプ...
-
Open Office Org 急に起動しな...
-
CreateProcessでうまくexeファ...
-
apache2.2が起動せず困っていま...
-
外部プログラムの起動と監視
-
CPUの使用率が100%から戻りま...
-
PostgreSQLについて
-
XDRIVEのログインをSENDKEYで自...
おすすめ情報