ちょっと先の未来クイズ第4問

こんにちは。
皆さんのお知恵をお借りしたいとおもいます。

現在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が正常に動作したか、そうでないか確認できないものでしょうか?

大変わかりづらい質問でご面倒ですが、宜しくお願い致します。

A 回答 (2件)

Borland系のコンパイラではerrnoで判別できます。


MS系のコンパイラにも該当するものがあるのではないかと思うのですが...
ヘルプ等を見てはいかがでしょう。

# WindowsAPIを使用するなら、CreateProcess()のエラーはGetLastError()で取得できます。
    • good
    • 0

system()がもともとそういう仕様の関数なので,


プログラムの実行をsystemで行っている限りはできません。

別の方法で実行するしかないでしょう。
exec()等を調べてみてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報