linux进程通信编程2
创建一个管道,然后创建一个子进程。让父进程想管道里写入数据,让子进程从管道中读取数据,程序在写或读之前把那些不用的描述符给关掉
源码
#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>int main(){ int n; int fd[2]; //管道【1】为写入端,管道【0】为读出端 pid_t pid;//定义一个进程号 char line[1024]; //定义一个缓存区 if(pipe(fd)<0) //建立管道 perror("pipe error"); if((pid=fork())<0)//创建子进程 perror("fork error"); else if (pid==0) //pid号为1则是父进程,为0表示子进程{ close(fd[0]); //关闭子进程 write(fd[1],"I'm child,hello father!",23);//让父进程从管道中写入数据}else { close(fd[1]);//程序在写或读之前把不用的描述符给关掉wait();// 带等子进程结束n=read(fd[0],line,1024); //让子进程从管道中读取数据,读取到缓冲数组中write(STDOUT_FILENO,line,n);//把缓冲区的数据写入到屏幕上}exit(0);}