linux无名管道的创建实例代码

简介: linux无名管道的创建实例代码


#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>
int main()
{
        int fd[2];//定义数组
        int pid;
        char buf[128];
        if(pipe(fd)==-1){//创建管道
                printf("chuang jian failed\n");//如果管道的值为负数那么创建失败
        }
        pid = fork();//创建进程
        if(pid<0){
                printf("jincheng child failed\n");//为负数的话,创建失败
        }
        else if(pid>0){//父进程
                sleep(3);//睡3秒
                printf("this is father\n");
                close(fd[0]);//关闭读
                write(fd[1],"hello from father",strlen("hello fro father\n"));//写入
                wait();//等待回收子进程,避免产生僵尸进程
        }else{//子进程
                printf("this is child\n");
                close(fd[1]);//关闭写
                read(fd[0],buf,128);//读取父进程往管道中写的数据
                printf("read from father: %s\n",buf);//打印管道中数据
                exit(0);//退出子进程
        return 0;
        }
}
~       

输出显示:

this is child等待3秒后

this is father

read from father: hello from father

无名管道不能同时进程读写,只能单个读写,另外为关闭

fd[0]为读

fd[1]为写

相关文章
|
10天前
|
存储 负载均衡 Linux
【Linux 系统】进程间通信(匿名管道 & 命名管道)-- 详解(下)
【Linux 系统】进程间通信(匿名管道 & 命名管道)-- 详解(下)
|
10天前
|
消息中间件 Unix Linux
【Linux 系统】进程间通信(匿名管道 & 命名管道)-- 详解(上)
【Linux 系统】进程间通信(匿名管道 & 命名管道)-- 详解(上)
|
17天前
|
Linux
【Linux】命名管道的创建方法&&基于命名管道的两个进程通信的实现
【Linux】命名管道的创建方法&&基于命名管道的两个进程通信的实现
|
17天前
|
Linux
【Linux】匿名管道实现简单进程池
【Linux】匿名管道实现简单进程池
|
17天前
|
Linux
【Linux】进程通信之匿名管道通信
【Linux】进程通信之匿名管道通信
|
3天前
|
Java Linux
Linux下如何定位最耗CPU的JAVA代码
Linux下如何定位最耗CPU的JAVA代码
10 0
|
10天前
|
Linux 开发工具 数据安全/隐私保护
如何在linux中用git提交代码到仓库
如何在linux中用git提交代码到仓库
|
17天前
|
Unix Linux
|
17天前
|
存储 安全 算法
【Linux | C++ 】基于环形队列的多生产者多消费者模型(Linux系统下C++ 代码模拟实现)
【Linux | C++ 】基于环形队列的多生产者多消费者模型(Linux系统下C++ 代码模拟实现)
32 0