2011-03-03 7 views
1

cmd1이 stdout에 무엇인가를 인쇄한다고합시다. C에서 cmd1로 캡처 할 수있는 cmd1 | cmd2가 작동합니다.C (cmd1 | cmd2) 함수의 결과 캡처

cmd1{ 
    fprintf(stdout, "Hello"); 
    } 

cmd2 : should take "hello" and only print "hel". 
+1

cmd1과 cmd2는 같은 프로그램에서 작동합니까? 아니면 명령 줄 프로그램입니까? – Satya

답변

2

파이프 라인 작업을 사용하려면 CMD2는 stdin에서 읽어야한다. fgets()stdin에서 읽기 때문에

예를 들어,이 같은 작업을 수행 할 수 있습니다

표준 출력은 다른 프로그램과 상호 작용 C와 아무 상관이 어떻게
#include <stdio.h> 

int main() { 
    char buf[1024]; 
    while (fgets(buf, sizeof(buf), stdin)) { 
     printf("%.*s\n", 3, buf); 
    } 
    return 0; 
} 
+0

출력이 여러 줄에 있으면 어떻게됩니까? line1 : hello, line2 : hello, line3 : hello. 첫 번째 두 줄만 출력하고 싶지만 둘 다 "hel"가됩니다. – user461316

+0

다른 질문처럼 들립니다. 내 대답이 *이 * 질문을 만족합니까? –

0

-이 운영 체제입니다. 그러나, 모든 OS에 나는 CMD2의 표준 입력에 CMD1의 표준 출력을 보내드립니다

cmd1 | cmd2 

를 입력 사용했습니다.

이것이 작동하지 않으면 어쩌면 cmd1 프로그램에서 버퍼를 플러시해야합니다. (이것은 많은 것들에 달려 있지만 ... 시도해보십시오.)