2

C++ プログラムがあります。このプログラムは、ユーザー定義のバッチ/シェル/ant スクリプトを実行する必要がある場合があります。このスクリプトの実行方法を制御することはできません。C++ プログラムからリターン コードを取得する方法はありますか?

次のようなもの: exec a script.sh > status.tmp ?

Windows と Linux の両方をサポートする必要があります。

何か案は?

4

3 に答える 3

8

Another simple of going this is get the return using the marco WEXITSTATUS. Pretty much the same way that you get return values of child process using waitpid call (in Unix based systems).

Here is the sample program. I have one C/C++ program, and one simple bash script.

Sample bash script

#!/bin/bash
echo "I am in Script"
exit 5;

Sample C/C++ program

int i, ret = system("./b.sh 2>&1 > /dev/null");
i=WEXITSTATUS(ret);
printf("My val= %d\n",i);

Output

./a.out 
My val= 5

If you want more advanced approach to have multiple return code from the script or want an interactive session then perhaps you should use popen

Hope this helps.

于 2013-12-11T18:36:34.097 に答える
0

bash では、ステータス コードは特別な変数に格納されます。

C:/myprogram.exe
echo $?
于 2013-12-11T18:50:12.593 に答える
0

Linuxでは使用するだけです

int ret=system("myshellscrtipt.sh");

スクリプトの戻り値はシステム関数の戻り値であるためです。Windows に同様の機能があるかどうかはわかりません。Qtツールキットを使用した場合、次のようなことができます

QProcess process;

process.start( "yourShellCommand", QStringList( args );

これは本当にクロスプラットフォームです..

于 2013-09-14T06:19:16.533 に答える