2011-12-15 46 views
2

そこで、いくつかのコードの自動テストを作成する作業をしています。 "cmdLineProc"というコマンドラインから実行可能な実行があります。CreateProcessを使用しているときにプロセスからエラーコードを戻す

私のテストプログラムをC++で作成しています(Pythonを使用していない、または私たちが使用するAPIがこれらのテストをスピードアップする)。 コマンドライン引数は、テストで文字列として作成され、CreateProcessを使用してcmdLineProcを実行する関数に渡されます。 これは問題なく動作します。私はcmdLineProcを呼び出すことができ、それは動作し、テストは成功します。しかし、エラーが返ってこなかったときだけ。

私がテストするときは、物事が失敗していることを確認する必要があります。これらの場合、cmdLineProcはエラー値を返します。

コマンドラインでcmdLineProcを実行して失敗するパラメータを指定すると、 "Error、Failed:-3"というメッセージが表示されます。ここで-3はエラーコードです。 しかし、これをC++テストでCreateProcessを使って実行すると問題が発生します。 CreateProcessは失敗し、-1を返します。コードは失敗しました。なぜ失敗したのかを示すものではありません。 GetExitCodeProcessを使用して、cmdLineProcの終了ステータスを取得します。

このメソッドを使用してcmdLineProcからエラー値を取得できるかどうかは誰でも知っていますか?そうでない場合は、誰かがこれを実装する方法を知っていますか?

+0

'GetLastError()' – Abyx

+0

GetLastErrorがうまく動作しません。これは初めて0を返します。これは初めてのものですが、GetLastError()をコード内のいくつかの異なる場所に配置しようとしましたが、0を返すたびに発生します。 – discodowney

+0

Sory。私は 'CreateProcess'が失敗したと思っていましたが、非ゼロ値(-1)を返した場合は成功を意味します。 – Abyx

答えて

0

GetExitCodeProcessは、実行プロセスの終了コードを返します。プログラムを実行するときに別のエラーが表示された場合、作成されたプロセスはstdoutに別のエラーを単に書き込んでいます。

この場合、作成されたプロセスの出力を解析する必要があります。

これはどのように行われているか見ることができますhere

+0

よろしいですか。ヘルプの若者のための乾杯。病気はこれを撃つ。ありがとう。 – discodowney

関連する問題