我正在尝试使用C
在Linux中编写命名管道我搜索并搜索但仍无法找到如何正确读取命名管道。虽然我的代码看起来不错。
管道的写作工作 但阅读陷入无限循环。这种行为很奇怪。
#include<stdio.h>
#include<fcntl.h>
#include<sys/types.h>
#include<string.h>
struct letter
{
char name[10];
float val;
}temp;
float a,b;
int fd;
main()
{
int choice;
mkfifo("testfifo",0666);
fd=open("testfifo",O_RDWR);
printf("Input value of A ");
scanf("%f",&a);
printf("Input value of B ");
scanf("%f",&b);
write_to_fifo();
close(fd);
printf("Evaluate?");
scanf("%d",&choice);
fd=open("testfifo",O_RDWR);
evaluate();
}
write_to_fifo()
{
temp.val=a*b;
strcpy(temp.name,"temp1");
write(fd,temp,sizeof(temp));
}
evaluate()
{
float prod;
read(fd,temp,sizeof(temp));
prod=temp.val;
printf("Result is %f",prod);
}