创建一个管道,然后创建一个子进程。让父进程想管道里写入数据,让子进程从管道中读取数据,程序在写或读之前把那些不用的描述符给关掉
源码
#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);
}