fifo_read.c
#include <stdio.h>
#include <stdlib.h>#include <fcntl.h>
#include <string.h>
#include <unistd.h>
int main(int argc,char **argv)
{
if(argc<2)
{
printf("usage:%s fifi\n",argv[0]);
exit(0);
}
printf("open fifo read...\n");
int fd=open(argv[1],O_RDONLY);
if(fd<0)
{
perror("open error");
exit(0);
}
else
{
printf("open success :%d \n",fd);
}
char buf[512];
memset(buf,0,sizeof(buf));
if(read(fd,buf,sizeof(buf))<0)
{
perror("read error");
}
printf("the buf is :%s\n",buf);
}
fifo_write.c
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
int main(int argc,char **argv)
{
if(argc<2)
{
printf("usage:%s fifi\n",argv[0]);
exit(0);
}
printf("open fifo read...\n");
int fd=open(argv[1],O_WRONLY);
if(fd<0)
{
perror("open error");
exit(0);
}
else
{
printf("open success :%d \n",fd);
}
char *s="gjlkdsjgldfjgld";
size_t size=strlen(s);
if(write(fd,s,size)!=size)
{
perror("read error");
}
}
由于上述程序只是打开了命名管道,所以必须要传入一个参数为管道,若没有,须使用mkfifo 管道名 来下创建一个管道