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);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值