2009-12-29 4 views
2

기본적으로 프로그램의 표준 출력 (printf())을 별도의 프로세스/스레드로 캡처 할 작은 라이브러리를 만들고 있습니다.이 프로세스는 특정 작업을 수행해야합니다. 캡쳐 된 출력물을 파일에 담아서) ... 나는 진지한 C 프로그래밍을 시작하기 시작한 것이므로 여전히 배우고있다.프로그램 출력 캡처

나는 이것을 처리하는 가장 좋은 방법을 알고 싶다. 프로세스 나 쓰레드를 사용하는 것이다. printf() 문을 어떻게 캡쳐 할 수 있는가?이 라이브러리는 프로그램 ... 일반적인 가정은 그것을 사용하는 프로그램은 스레드 된 것입니다 그래서 어떤 종류의 접근 방식을 취할 수 있습니다.

답변

0

다른 프로그램에서 STDOUT을 캡처하는 가장 쉬운 방법은 명령 줄 ">"또는 "|"연산자를 사용하여 프로그램의 STDIN으로 간단하게 파이프하는 것입니다. 그래서 기본적으로 C 라이브러리에서 scanf를 사용하여 STDIN을 읽거나 가져 오거나 사용하는 STDIN 함수를 읽어야합니다.

이것은 유닉스/리눅스 세계에서 꽤 표준적인 규칙입니다. STDIN에서 읽고 STDOUT에 형식을 잘 지정하는 프로그램으로, 명령 행에 파이프를 추가하면 서로 다른 프로그램을 함께 파이프 라인 할 수 있습니다. :

grep "somestring" file1 file2 file3 | cut -d, -f1 | sort | uniq 
+0

아니'gets()'; 결코'gets()'를 사용하지 말고 대신'fgets()'를 사용하십시오. – pmg

4

프로그램이나 라이브러리에서 프로그램을 실행하고 출력을 캡처하려면 popen (3)을 확인하십시오. 프로그램에서 출력을 읽을 수있는 FILE 포인터를 제공합니다.