Ubuntu で名前付きパイプの実験を行っただけですが、クライアントに入力した文字列をサーバーが受信できません。どうすれば解決できますか? クライアントで Ctrl+C を押すと、サーバーはいくつかの文字を受け取ることができます。
サーバ
#include<stdio.h>
#include<stdlib.h>
#include<sys/stat.h>
#include<unistd.h>
#include<linux/stat.h>
#define FIFO_FILE "sampleFIFO"
int main()
{
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:%s\n",readbuf);
fclose(fp);
}
return(0);
}
クライアント
#include<stdio.h>
#include<stdlib.h>
#define FIFO_FILE "sampleFIFO"
int main(int argc,char *argv[])
{
FILE *fp;
char buf[80];
if((fp = fopen(FIFO_FILE,"w")) == NULL)
{
perror("error");
exit(1);
}
while(1)
{
memset(buf,0,sizeof(buf));
fgets(buf,80,stdin);
fputs(buf,fp);
}
fclose(fp);
return(0);
}