C 프로그램에서 ltrace 명령 출력을 지속적으로 확인하는 방법

C 프로그램에서 ltrace 명령 출력을 지속적으로 확인하는 방법

ltraceC 프로그램을 사용하여 명령의 출력을 캡처 하려고 합니다 .

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

관련 정보