如何从C中读取命名管道?

时间:2014-06-29 08:09:16

标签: c linux process named-pipes

我正在尝试使用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);
}

0 个答案:

没有答案