Linux--进程间通信(管道及有名管道FIFO)(转)
2012-03-22 21:41
645 查看
一. 管道:
1.只能用于具有亲缘关系的进程之间的通信
2.半双工通信模式
3.一种特殊的文件,是一种只存在于内核中的读写函数
管道基于文件描述符,管道建立时,有两个文件描述符:
a. fd[0]: 固定用于读管道
b. fd[1]: 固定用于写管道
创建管道:pipe()
View Code
1.只能用于具有亲缘关系的进程之间的通信
2.半双工通信模式
3.一种特殊的文件,是一种只存在于内核中的读写函数
管道基于文件描述符,管道建立时,有两个文件描述符:
a. fd[0]: 固定用于读管道
b. fd[1]: 固定用于写管道
创建管道:pipe()
View Code
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <errno.h> #include <unistd.h> #include <fcntl.h> #define FIFO "myfifo" #define BUFF_SIZE 1024 int main() { char buff[BUFF_SIZE]; int real_read; int fd; %access确定文件或文件夹的访问权限。即,检查某个文件的存取方式 %如果指定的存取方式有效,则函数返回0,否则函数返回-1 %若不存在FIFO,则创建一个 if(access(FIFO,F_OK)==-1){ if((mkfifo(FIFO,0666)<0)&&(errno!=EEXIST)){ printf("Can NOT create fifo file!\n"); exit(1); } } %以只读方式打开FIFO,返回文件描述符fd if((fd=open(FIFO,O_RDONLY))==-1){ printf("Open fifo error!\n"); exit(1); } % 调用read将fd指向的FIFO的内容,读到buff中,并打印 while(1){ memset(buff,0,BUFF_SIZE); if ((real_read=read(fd,buff,BUFF_SIZE))>0) { printf("Read from pipe: '%s'.\n",buff); } } close(fd); exit(0); }
相关文章推荐
- Linux进程间通信二--有名管道FIFO
- Linux进程间通信(一)之无名管道(PIPE)和有名管道(FIFO)
- linux编程---进程间通信---FIFO---有名管道
- Linux--进程间通信(管道及有名管道FIFO)(转)
- 嵌入式 Linux环境进程间通信(二):有名管道(FIFO)
- Linux--进程间通信(管道及有名管道FIFO)
- Linux--进程间通信(管道及有名管道FIFO)(转)
- linux进程间通信-有名管道(FIFO)
- Linux--进程间通信(管道及有名管道FIFO)
- Linux进程间通信——有名管道 FIFO 详解
- linux进程间通信-有名管道(FIFO)
- linux进程间通信-有名管道(FIFO)
- Linux--进程间通信(管道及有名管道FIFO)
- Linux环境进程间通信(一) 管道及有名管道
- Linux环境进程间通信系列(一):管道及有名管道
- linux 有名管道FIFO
- Linux环境进程间通信系列(一):管道及有名管道
- linux 有名管道FIFO的一点理解
- linux16.04 中创建 有名管道 fifo
- Linux进程间通信之管道(pipe)、命名管道(FIFO)与信号(Signal)