문제

저는 Linux의 파이핑 I/O 기능을 처음 접했습니다.2개의 c 파일이 생성되었으며 첫 번째 파일은 데이터를 보냅니다.

    #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;
}

마지막으로 다음을 사용하여 첫 번째 파일의 데이터를 두 번째 파일로 리디렉션하려고 합니다.

./send_test.out | ./rcv_test.out

터미널은 반복적으로 인쇄합니다."수신번호:0", 내가 뭘 잘못하고 있는 걸까요?또한 송신자에서 수신자로 출력을 보내는 동안 동시에 실행되는 두 프로그램에 대한 터미널 창을 어떻게 해야 합니까?

미리 감사드립니다

도움이 되었습니까?

해결책

수신자가 이해할 수 있는 형식으로 번호를 "전송"하는 것이 아닙니다.

다음을 제외한 모든 텍스트를 제거해 보십시오. %d 보낸 사람의 형식 문자열에서.

또한 반환 값을 확인해야 합니다. scanf() 그것에 의존하기 전에.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top