2개의 c 파일을 사용한 Linux 명령줄 리디렉션
-
23-12-2019 - |
문제
저는 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()
그것에 의존하기 전에.
제휴하지 않습니다 StackOverflow