C++ プログラムがあります。このプログラムは、ユーザー定義のバッチ/シェル/ant スクリプトを実行する必要がある場合があります。このスクリプトの実行方法を制御することはできません。C++ プログラムからリターン コードを取得する方法はありますか?
次のようなもの: exec a script.sh > status.tmp ?
Windows と Linux の両方をサポートする必要があります。
何か案は?
C++ プログラムがあります。このプログラムは、ユーザー定義のバッチ/シェル/ant スクリプトを実行する必要がある場合があります。このスクリプトの実行方法を制御することはできません。C++ プログラムからリターン コードを取得する方法はありますか?
次のようなもの: exec a script.sh > status.tmp ?
Windows と Linux の両方をサポートする必要があります。
何か案は?
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.
bash では、ステータス コードは特別な変数に格納されます。
C:/myprogram.exe
echo $?
Linuxでは使用するだけです
int ret=system("myshellscrtipt.sh");
スクリプトの戻り値はシステム関数の戻り値であるためです。Windows に同様の機能があるかどうかはわかりません。Qtツールキットを使用した場合、次のようなことができます
QProcess process;
process.start( "yourShellCommand", QStringList( args );
これは本当にクロスプラットフォームです..