rshを使って別サーバのshellを実行しその戻り値を取得するshellがあり、コマンドラインからのshell実行とC++内部からのshell実行で値が違い、原因がわからず困っております。知恵をお貸し頂けないでしょうか。
実行shell内容<test.sh>
lang
1#!/bin/sh 2V_SERVER=$1 3VRESULT=`rsh -l user ${V_SERVER} "/usr/local/test2.sh > /dev/null; echo \\$?"` 4 5exit $VRESULT
コマンドラインからshell実行
lang
1/usr/local/test.sh サーバ名 2echo $?
リモートシェルの正しい戻り値が表示される。
C++内部からのshell実行
lang
1strcpy(server,"サーバー名"); 2sprintf(command, "/usr/local/test.sh %s", server); 3int returnid = system(command); 4returnid = WEXITSTATUS(returnid); 5printf(returnid);
ファイル出力して確認したところ、プログラム側からだとtest.shの変数VRESULTに値が入っていないようです。
コマンドラインとプログラムからのshell実行について両方とも同一のユーザにてshellを実行しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/05/20 01:21