IPC通信 - 管道

        管道是半双工的, 需要 双向通信 需建两条管道。

        管道上限 65535 , 相当于64K数据, 超出该数据上限则会满掉无法装入管道。

        两端同时存在才可被使用管道。

1. pipe() 匿名管道

同在一个工程中, 是父子进程 与 兄弟进程 之间的通信建立的管道为 匿名管道 pipe();

  一个进程 发送数据  , 一个进程接收数据。

int pipe(int file_descriptor[2]);

        参数 file_descriptor:文件描述符数组,其中file_descriptor[0]表示读端,file_descriptor[1]表示写端 返回值:成功返回0,失败返回错误代码;

写端 : close(file_descriptor[0]);// 关闭掉读端

读端 : close (file_descriptor[1]);// 关闭掉写端

 阻塞函数:

 read()  fgets() 等

在循环中 如果 read没读到数据会停住。


#include <iostream>
#include <string.h>
#include <stdio.h>
#include <unistd.h>

using namespace std;

int main()
{
	//父到子
	int fdrr[2] = { 0 };
	//子到父
	int fdrr2[2] = { 0 };
	//发送数据的数组
	char bur[50] = { 0 };
	//进程id
	pid_t id = 0;

	if (pipe(fdrr) != 0 || pipe(fdrr2) != 0)
	{
		perror("创建管道失败!");
	}
	else
	{
		cout << "创建管道成功!" << endl;
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值