![C 프로그램에서 ltrace 명령 출력을 지속적으로 확인하는 방법](https://linux55.com/image/133283/C%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%97%90%EC%84%9C%20ltrace%20%EB%AA%85%EB%A0%B9%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EC%A7%80%EC%86%8D%EC%A0%81%EC%9C%BC%EB%A1%9C%20%ED%99%95%EC%9D%B8%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
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
기본 출력은 다음과 같습니다.표준 에러따라서 다음으로 리디렉션되어야 합니다.표준 출력파이프에 유용합니다.