有名管道通信

有名管道通信:

    又名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


猜你喜欢

转载自blog.csdn.net/jiaochiwuzui/article/details/79653662