linux进程间通信-管道
一 管道的局限性
管道有两个局限性:(1)他是半双工(即数据只能在一个方向上流动)。(2)它只能在具有公共祖先的进程之间使用。一个管道由一个进程创建,然后该 进程调用fork,此后父子进程之间就可该管道。
二 管道的创建
#include<unistd.h>
int pipe(int files[2]);
三 管道原理图
四 管道只有一端时的情况
五 例子
#include <unistd.h> #include <stdio.h> #include <stdlib.h> #define MAXLINE (2014) int main(void) { int n, fd[2]; pid_t pid; char line[MAXLINE]; if (pipe(fd) < 0) printf("pipe error"); if((pid = fork()) < 0) printf("fork error"); else if (pid > 0) { /* parent */ close(fd[0]);/* close read */ printf ("the process pid %d\n", getpid()); printf ("the process write to pipe : hello world!\n"); write(fd[1], "hello world\n", 12); } else { /* child */ close(fd[1]); /* close write */ printf("the process pid %d\n", getpid()); n = read(fd[0], line, MAXLINE); write(STDOUT_FILENO, line, n); } exit(0); }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。