2016-08-05 11 views
0

私は"codesign -dvv"コマンドをpopenで実行しています。これは、子プロセス(codeign -dvvvvの子プロセス)へのバイリセクションパイプを開きます。パイプからの読み込みを試みると、コマンドの出力は0バイトとなります。以下はコードです:codesign -dvvvvを端末からcppプログラムに出力

\#define MAX_BUF_SIZE 1024 
\#define MAX_HASH_SIZE 1024 

snprintf(command, MAX_BUF_SIZE,"codesign -dvv %s", file); 
hash = (char *) malloc(MAX_HASH_SIZE); 

if (NULL == hash) { 
    return NULL; 
} 

if (!(hfile = popen(command, "r"))){ 
    return NULL;  
} 

while (fgets(temp, MAX_BUF_SIZE, hfile)!=NULL); 
printf("sign %lu %s \n",strlen(temp),temp); 
strcpy(hash,temp); 
pclose(hfile); 

出力で私はcodesignコマンドの出力を見ることができますが、私のプログラムはそれを読むことができません。

答えて

1

codesignの出力は標準出力ではなく、標準出力にあります。 popenはstdoutにのみアクセスします。

あなたのコマンド例えば:これはあなたが出力を読み取ることができます

snprintf(command, MAX_BUF_SIZE,"codesign -dvv %s 2>&1", file); 

ホープstdoutに標準エラー出力をリダイレクトする必要があります。

関連する問題