2012-04-08 12 views
4

cプログラムが正しくコンパイルされて実行されているかどうかをテストしようとしています。cプログラムのmain関数の戻り値を他のcプログラムから確認する方法

は、私が最初のプログラムは、0を返したか、何か他のものを返したことを

をチェックするCプログラムを書きたいので、私はCプログラムでのHello Worldを印刷していると言います。

どうすればいいですか?

ありがとうございます。

答えて

3

これは通常プラットフォームに依存し、プログラムの実行方法によって異なります。あなたがCライブラリ関数systemを使用する場合は、プログラムを実行することができ、その後、次のようにそのプログラムからのステータスコードを読み取る:

int returnCode = system("./hello-world-program"); 
if (returnCode == 0) { 
    ... 
} 

しかし、あなたはこれを行うには、OSレベルのプリミティブを使用してオフに通常方がよいでしょう。 Linuxはforkexecを使用してこれを処理し、wait関数を他のコードと共に使用すると、プロセスID番号を指定して子プロセスの終了コードを読み取ることができます。 Windowsにはこれを行うための独自のメカニズムがあります。残念ながら、私はそれに精通していません。

希望すると便利です。

+0

OK Linuxではなく、私が**。/ hello-world-program **と呼んでいるときに、システムコールで私に次のエラーを通知しています。 ''操作可能なプログラムまたはバッチファイル 内部または外部のコマンドとして認識されません。 !コードがある。ここ
をcontinue._する0.047秒 任意のキーを押して 'int型メイン(無効) { のprintf( "Hello World" の);: OK プロセスは、0(0x0の)実行時間を返して return 0; } 'と' int a = system( "./Hel.exe"); if(a == 0) { printf( "ok"); } else printf( "!ok"); return 0; '
ありがとうございます –

+0

申し訳ありませんが、'。/ Hello.exe'という表記はLinux固有のものです。代わりに '。/'を削除し、代わりに 'Hello.exe'を書くようにしてください。 – templatetypedef

+0

私はそれを得ました。ありがとう@templatetypedef –

関連する問題