• 締切済み

system関数(Windows)の戻り値!!

こんにちは。 皆さんのお知恵をお借りしたいとおもいます。 現在Windows NT & VC++ でプログラムの勉強をしています。 例えば、aaa.cppのソース内で、exe(例えば、c:\work\sample.exe)を実行させて 成功したかどうか念の為、確認を行いたいと考えております。 ---aaa.cpp--- int rtn_flg; /* system関数の戻り値 */ (略) rtn_flg = system("c:\\work\\sample.exe"); /* sample.exeが正常に動作したか確認したい */ ------------- 上記のようなプログラムでsample.exeが正常に実行できたか、確認したいとかんがえております。 正常に実行できなかった場合というのは、たとえは『実行ファイルが存在しません。』などというシステムエラーです。 (sample.exe内で意図的にエラーをリターンしているといういみではありません。) 実際上記のプログラムを実行すると、正常にexeが動作したときも、例えばsample.exeの名称をssaammppllee.exeと実際にありえない名称にしても rtn_flg には"0"が返ってきます。 rtn_flgでexeが正常に動作したか、そうでないか確認できないものでしょうか? 大変わかりづらい質問でご面倒ですが、宜しくお願い致します。

みんなの回答

  • zzzzzz
  • ベストアンサー率61% (70/113)
回答No.2

Borland系のコンパイラではerrnoで判別できます。 MS系のコンパイラにも該当するものがあるのではないかと思うのですが... ヘルプ等を見てはいかがでしょう。 # WindowsAPIを使用するなら、CreateProcess()のエラーはGetLastError()で取得できます。

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.1

system()がもともとそういう仕様の関数なので, プログラムの実行をsystemで行っている限りはできません。 別の方法で実行するしかないでしょう。 exec()等を調べてみてください。

関連するQ&A