无名管道

在linux系统中,无名管道一旦被创建完成后(无名管道的读端和写端相当于两个文件), 操作无名管道等同与操作文件 ,无名管道的读端被视为一个文件;无名管道的写端也被视为一个文件;因此 可以使用read write fclose 函数接口来操作!
无名管道学习:
1.创建管道 pipe
2.读取/写入管道数据 read/write
3.关闭管道 close





无名管道创建:
函数原型:int pipe(int pipefd[2]);
头文件:
#include <unistd.h>
函数功能:
创建一个无名管道,一个单向的数据通道,用于进程间通信
返回值:
成功 0;
失败 -1;
参数:
pipefd被用于返回指向管道两端的两个文件描述符,其中pipefd[0] 指向管道的读端,pipefd[1]指向管道的写端

范例代码:
范例说明:父子进程间通信
#include <stdio.h>
#include <unistd.h>
int main()
{
char outbuf[1024]={0};
char inbuf[1024]="Hello World!\n";
pid_t pid=0;
int pipefd[2];
//创建无名管道 [注释:管道一定要在创建子进程之前创建,否则父进程和子进程看到的是两个不同管道]
pipe(pipefd);
//创建子进程
pid =fork();
//父进程
if(pid>0)
{
//往管道写数据
write(pipefd[1],inbuf,sizeof(inbuf));
wait();//等待
close(pipefd[1]);
_exit(0);
}
//子进程
if(pid==0)
{
//在管道的读端读取数据
read(pipefd[0],outbuf,sizeof(outbuf));
close(pipefd[0]);
printf("data is :%s\n",outbuf);
}
return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值