IPC——管道(Pipe)
来源:互联网 发布:cntv中国网络电视台 编辑:程序博客网 时间:2024/06/05 17:09
用于进程间通信的有5种常用方式:管道、FIFO、消息队列、信号量、共享存储等。
管道 (亦被称为无名管道,以区分FIFO:有名管道)顾名思义具有两个对外端口,一个称为读端,一个称为写端。一个进程在管道的写端写数据,另一个进程从管道的读端
读出数据。如下图所示:
管道仅局限于父进程与子进程之间的通信。
管道通信的特点:
1.管道通讯是单向的,有固定的读端和写端。
2. 数据被进程从管道读出后,在管道中该数据就不存在了。
3. 当进程去读取空管道的时候,进程阻塞。
4. 当进程往满管道写数据时,进程阻塞。
5. 系统常量PIPE_BUF规定了内核的管道缓冲区大小。
其中fd[0]表示管道读端,fd[1]表示管道写端
参考书籍《Unix环境高级编程(第三版)》
1 #include "apue.h" 2 3 int main(void) 4 { 5 int n; 6 int fd[2]; 7 pid_t pid; 8 char line[MAXLINE]; 9 10 if(pipe(fd)<0)//创建一个pipe 11 err_sys("pipe error"); 12 13 if((pid=fork())<0) 14 err_sys("fork error"); 15 16 else if (pid>0)//parent process 17 { 18 close(fd[0]); 19 write(fd[1],"enjoy Linux!\n",13); 20 } 21 else//child 22 { 23 close(fd[1]); 24 n=read(fd[0],line,MAXLINE); 25 write(STDOUT_FILENO,line,n); 26 } 27 exit(0); 28 }~
0 0
- IPC——管道(Pipe)
- IPC——无名管道pipe
- 进程间通信(IPC):管道(Pipe)
- IPC实现机制(一)---pipe(匿名管道)
- 深入理解Linux进程间通信(IPC)-- 管道pipe
- linux ipc—管道
- Linux IPC通讯之-管道(PIPE、FIFO)
- 进程间通信-管道 IPC pipe
- 进程间通信IPC之--无名管道(pipe)和有名管道(fifo)
- Linux进程通信IPC--管道Pipe/Named Pipe
- Swoole源码学习记录(六)——Pipe管道
- (二十六)进程间通信——pipe管道
- Linux进程通信(一)——pipe管道
- 进程间的通信方式——pipe(管道)
- IPC——匿名管道
- IPC——命名管道
- 管道pipe——Linux学习笔记
- Linux学习笔记——管道PIPE
- android:Background线程池和UiThread线程池
- deque与vector的主要区别
- s.indexOf(c)的用法,在字符串“s”中第一次出现字符“c”的位置。
- [精]国外程序员整理的Java资源大全
- 正则表达式 超经典教程
- IPC——管道(Pipe)
- C#中页面之间传值传参的六种方法
- android: 官方apk签名文档
- 进程与线程的一个简单解释
- oracle学习笔记(3)(数据文件,日志文件,临时文件)
- HEVC码率控制代码追踪(三)
- ServletContextLisenter
- 做完了PAT (Basic Level) Practise (中文)总结一下
- 关于fragment中监听返回键或者其它的按键