Linux_4.3_无名管道通信




进程间通讯的目的:



通讯发展史:




进程间通讯的方式:



管道通信:



管道通信的特点:


无名管道:半双工管道(数据只能在一个方向上流动)



(1) 函数的学习




5.1创建无名管道

5.1.1 函数名

pipe

5.1.2 函数原形

int pipe(int pipefd[2])

5.1.3 函数功能

创建无名管道

5.1.4 所属头文件

#include<unistd.h>

5.1.5 返回值

成功:0

失败:-1

5.1.6 参数说明

pipefd[0]: 指向管道的读端fd

pipefd[1]: 指向管道的写端fd



实例:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>


int main(void)
{
    pid_t pid = 0;
    int pipefd[2];
    char c_buf[10];


    /*2. create pipe*/
    pipe(pipefd);
    /*1. create process*/
    pid = fork();


    if(pid>0)
    {
        /*parent process write date*/
        write(pipefd[1],"hello",6);
        wait();
        close(pipefd[1]);
        exit(0);
    }
 if(pid==0)
    {
        /*progeny process*/
        read(pipefd[0],c_buf,6);
        printf("child read %s\n",c_buf);
        close(pipefd[0]);
        exit(0);
    }


    return 0;
}
                         



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值