프로그램 작동이 이상하네요.[질문]

리눅스 프로그래머를 위한 가이드에서 파이프를 이용한 서버, 클라이언트 소스인데 제가 예측하기로는
서버프로그램을 백그라운드로 돌리고 클라이언트 프로그램에 아규먼트로 스트링을 쳐주면 서버프로그램이 스트링을 출력해 주는 것이
정상 아닌가요? 왜 아무 반응도 없지요?
fifoserver.c
#include
#include
#include
#include
#include <linux/stat.h>
#define FIFO_FILE "MYFIFO"
int main(void)
{
FILE *fp;
char readbuf[80];
/*파이프가 존재하지 않으면 만든다*/
umask(0);
mknod(FIFO_FILE, S_IFIFO|0666, 0);
while(1)
{
fp = fopen(FIFO_FILE, "r");
fgets(readbuf, 80, fp);
printf("Received string %s\n", readbuf);
fclose(fp);
}
return(0);
}
디폴트로 FIFO는 차단됨으로, 컴파일한 후에 백그라운드로 server를 실행시켜라
$ fifoserver&
fifoclient.c
#include <stdio.h>
#include <stdlib.h>
#define FIFO_FILE "MYFIFO"
int main(int argc, char *argv[])
{
FILE *fp;
if ( argc != 2 ) {
printf("USAGE fifoclient [string]\n");
exit(1);
}
if((fp = fopen(FIFO_FILE, "w")) == NULL) {
perror("fopen");
exit(1);
}
fputs(argv[1], fp);
fclose(fp);
return(0);
}
가끔 이상한 값이 튀어나오지만 잘됩니다 :-)
와우버전에서테스트했는데
잘 동작하더군요
가끔 엉뚱한 결과가 나오기도 하는데 -p
파일을 지워주고 새로 하니정상적으로 나오네요
댓글 달기