有名管道通信:
又名fifo文件。
学前知识储备
对系统函数open ,read,write会用,有一定的了解。
FIFO文件的特性(结合普通文件对比)
@1:读取FIFO文件的进程只能以"O_RDONLY"方式打开FIFO文件
@2:写FIFO文件的进程只能以“O_WRONLY”f方式打开FIFO文件
@3:FIFO文件里面的内容被读取后就消失了,而普通文件的不会
函数原型:
#include<sys/types.h>
#include<sys/stat.h>
int mkfifo(const char* pathname,mode_t mode)
Linux下操作命令
vim fifo_write.c
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
int main(void)
{
int fd=0;
/*创建fifo文件*/
mkfifo("/tmp/fifomy".0666);
/*以只写的方式打开FIFO文件*/
fd=open("/tmp/fifomy",O_WRONLY);
/*写入数据*/
write(fd,"hello world",12);
close(fd);
return 0;
}
生成可执行文件:
gcc fifo_write.c -o fifo_write
vim fifo_read.c
#include<stdio.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
#include<unistd.h>
int main(void)
{
int fd=0;
char c_buf[15];
/*以只读的方式打开FIFO文件*/
fd=open("/tmp/fifomy",O_RDONLY);
read(fd,c_buf,12);
printf("read is %d\n",c_buf);
close(fd);
unlink("/tmp/fifomy");
return 0;
}
生成可执行文件:
gcc fifo_read.c -o fifo_read
再开二个终端,一个运行命令 ./fifo_write,另一个运行命令 ./fifo_read