2011-07-06 4 views
2

他のプログラムを呼び出すためにpopen()を使用していますが、その戻り値を$で取得したいですか?

例:

FILE* fd = popen("/usr/local/my_check > /dev/null ; echo $?","r"); 
int read_num = fread(buffer, sizeof(char), BUFFER_SIZE, fp); 
printf("%s\n", buffer); 
pclose(fd); 

が、私はいつもprinf機能でゼロを取得します。

$によって戻り値を取得する方法は他にありますか? Cプログラムで?

ありがとうございました!ここ

は、プログラムのリターンコードを取得するための正しい方法である:

int ret = pclose(fd); 
if(WIFEXITED(ret)) 
    printf("%d\n", WEXITSTATUS(ret)); 
+1

てみてください男のpopenと終了コードを取得することができます:pclose()関数は、関連するプロセスを待機し終了します; wait4(2)が返すコマンドの終了ステータスを返します。 – andrewdski

+0

ありがとう、私はwaitpid()上のすべてを実現する – SILENCE

答えて

9

あなたは

int rc = pclose(fd) 
関連する問題