ltrace
Cプログラムを使用してコマンドの出力をキャプチャしようとしています。
を試してみましたが、うまくpopen()
いきません。一度ではなく連続出力をキャプチャする必要があります。
以下は私のコードです。
#include <stdio.h>
#include <stdlib.h>
int main(int carg, char *args[]) {
FILE *fp = popen("ltrace -p pid", "r");
char buf[255];
while (1) {
if (fgets(buf, 255, fp) != NULL) {
printf("Captured Text: %s", buf);
}
}
return 0;
}
アドバイスをしてください
ベストアンサー1
ltrace
出力先標準エラー、いいえ標準出力。しかし、popen()
接続コマンドを読み取るパイプ標準出力。したがって、この問題を解決するのに十分です。
FILE *fp = popen("ltrace -p pid 2>&1", "r");
ltrace
更新:もう一度、シェルで同じコマンドを直接フィルタリングするには、次の手順を実行します。
ltrace -p pid 2>&1 | grep someregex
ltrace
デフォルト出力は次のとおりです。標準エラーしたがって、次にリダイレクトする必要があります。標準出力パイプに便利です。