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
기본 출력은 다음과 같습니다.표준 에러따라서 다음으로 리디렉션되어야 합니다.표준 출력파이프에 유용합니다.