mkfifo를 이용해서 주고받는 프로그램을 만드는데..

shimkyung의 이미지

sendmessage : FIFO를 통해 메시지를 보내는 부분

#define MSGSIZE 63

char *ffifo = "ffifo";

main(int argc, char **argv)
{
int fd, j, nwrite;
char msgbuf[MSGSIZE+1];

if(argc<2)
{
fprintf(stderr, "Usage : %s msg_\n",argv[0]);
return 1;
}
if((fd=open(ffifo,O_WRONLY | O_NONBLOCK)) < 0)
fatal("fifo open failed");

for(j=1;j {
if(strlen(argv[j])>MSGSIZE)
{
fprintf(stderr, "message too long %s\n", argv[j]);
continue;
}
strcpy(msgbuf,argv[j]);

if((nwrite=write(fd, msgbuf, MSGSIZE+1)) == -1)
fatal("message write failed");
}
return 0;
}
int fatal(char *s)
{
perror(s);
return 0;
}

recevemessage : FIFO를 통해 메시지를 받는 부분

#define MSGSIZE 63

char *ffifo = "ffifo";

main(void)
{
int fd;
char msgbuf[MSGSIZE+1];

if(mkfifo(ffifo,0666) == -1)
{
if(errno != EEXIST)
fatal("reserver : mkfifo");
}

if(fd=open(ffifo,O_RDWR) < 0)
fatal("fifo open failed");

for(;;)
{
if(read(fd,msgbuf,MSGSIZE+1)<0)
fatal("message read failed");

printf("message received :%s\n",msgbuf);
}
}
int fatal(char *s)
{
perror(s);
}

책을 보고 이렇게 똑같이 따라했는데 다음과 같이 실행하면..

./recevemessage &
./sendmessage 'abc'

원래는 정상적으로 출력이 되야 하는데 그러지 아니하고

[3]+ Stopped ./recevemessage

이렇게 끝나버리네요 -_-;;
왜 그런걸까요;;