2014-04-14 2 views
0

저는 Linux에서 파이핑 I/O 기능을 처음 사용했습니다.2 개의 c- 파일을 사용하는 Linux 명령 줄 리디렉션

#include <stdio.h> 
    #include <stdlib.h> 
    #include <time.h> 
    #include <unistd.h> 

    int main(int argc, char* argv[]) 
    { 
     int i = 0; 

     for(;;) 
     { 
      printf("\nSent number: %d",i); 
      i++; 
      sleep(1); 
      fflush(stdout); 
     } 

    return 0; 
} 

번째 파일 인쇄 번호를 수신하고 표시 :

#include <stdio.h> 
    #include <stdlib.h> 
    #include <time.h> 
    #include <unistd.h> 

int main(int argc, char* argv[]) 
{  
    int x; 

    for(;;) 
    { 
     scanf("%d",&x); 
     printf("Received number: %d\n",x); 
     sleep(1); 
     fflush(stdout); 
    } 

    return 0; 
} 

마지막 I가 제 파일에서 데이터를 재 지정하려고를 2 C-파일 만들어진 첫 번째는 데이터 전송 두 번째는 다음과 같습니다.

./send_test.out | ./rcv_test.out 

터미널에서 "수신 번호 : 0"을 잘못 입력 했습니까? 또한 송신기에서 수신기로 출력을 보내는 동안 동시에 실행되는 두 프로그램의 터미널 창을 가질 수 있습니까? 사전

답변

0

당신은 "전송"하지 않습니다에

감사는 형식의 수는 수신기가 이해할 수있다.

발신자의 서식 지정 문자열에서 %d을 제외한 모든 텍스트를 제거해보십시오.

또한 신뢰할 수있는 값인 scanf()을 확인해야합니다.

+0

그 트릭을 했어, 고마워! 두 개의 다른 터미널 창에서 동시에 두 프로그램을 모두 실행할 수 있습니까? – user3488736

+1

두 프로그램이 데이터를 보내도록 FIFO를 만들 수 있습니다. "mkfifo pipe"를 입력하고 "./program1> pipe"를 실행하고 다른 창에서 "./program2

+0

대단히 감사합니다! – user3488736