【进程间通信】匿名管道

news2024/11/14 15:21:47

1.进程间通信的介绍

是什么

为什么 

怎么做 

匿名管道

原理

特征 

管道的四种情况可以写代码自己看看 

管道接口 

编码实现 

父进程进行读,子进程进行写   里面有snprintf的使用

#include<iostream>
#include<unistd.h>
#include<stdlib.h>
#include<cstring>
#include<string>
#include <sys/types.h>
#include <sys/wait.h>

using namespace std;

void Write(int wfd)
{
    string s="hello child";
    pid_t pid=getpid();
    int number=0;

    char buf[1024];
    while(true)
    {
        sleep(1);
        //构建字符串进行发送   snprintf的使用
        snprintf(buf,sizeof(buf),"%s-%d-%d",s.c_str(),pid,number++);
        cout<<buf<<endl;
        write(wfd,buf,strlen(buf));
    }
}

void Read(int rfd)
{
    char buf[1024];
    while(true)
    {
        ssize_t n=read(rfd,buf,sizeof(buf));
        if(n>0)
        {
            buf[n]=0;
            cout<<"father get message["<<getpid()<<"]#"<<buf<<endl;
        }
        else if(n==0)
        {
            cout<<"father get null message"<<endl;
            return ;
        }
        else return ;

    }
}

int main()
{
    int pipefd[2]={0};
    int n=pipe(pipefd);
    if(n==-1) return -1;

    pid_t id=fork();
    if(id==0) //child 进行写
    {
        close(pipefd[0]);
        Write(pipefd[1]);
        close(pipefd[1]);
        exit(1);
    }
    //father  进行读
    close(pipefd[1]);
    Read(pipefd[0]);

    pid_t rid = waitpid(id, nullptr, 0);
    if(rid < 0) return 3;


    close(pipefd[0]);
    return 0;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2095236.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣435-无重叠区间(Java详细题解)

题目链接&#xff1a;435. 无重叠区间 - 力扣&#xff08;LeetCode&#xff09; 前情提要&#xff1a; 因为本人最近都来刷贪心类的题目所以该题就默认用贪心方法来做。 贪心方法&#xff1a;局部最优推出全局最优。 如果一个题你觉得可以用局部最优推出全局最优&#xff0…

祝贺 | 武汉大学生命科学学院孙蒙祥教授课题组时隔三年再发Nature

公众号&#xff1a;生信漫谈&#xff0c;获取最新科研信息&#xff01; 祝贺 | 武汉大学生命科学学院孙蒙祥教授课题组时隔三年再发Naturehttps://mp.weixin.qq.com/s?__bizMzkwNjQyNTUwMw&mid2247487136&idx1&sn9d65a5f18c7b5131800446bcbba7fa06&chksmc0e9…

计算之魂:持续于正确的因果链(一)

文章目录 引言25 人赛跑比赛过程模拟演示 BB84 量子密钥分发&#xff08;量子通信&#xff09;协议模拟图形化演示 BB84 协议过程BB84 协议优势应用场景 结语 引言 如果你只有一杆 100 年前的毛瑟枪&#xff0c;能够打中目标只能靠天分&#xff0c;如果你有一杆最先进的狙击步…

每日定期分享诗歌

安装schedule库 首先&#xff0c;确保你已经安装了schedule库。如果没有安装&#xff0c;可以使用以下命令进行安装&#xff1a; pip install schedulepython每日定期分享诗歌 import json import requests import schedule import timedef get_poem():# 这里使用一个公开的…

Linux下快速判断当前终端使用的是bash or csh

在Linux下设置环境变量的时候&#xff0c;可能你也遇到过export: Command not found一类的错误。这是因为当前终端使用的不是bash&#xff0c;如何快速判断当前终端使用的是哪种类型的shell呢&#xff1f; echo $0判断shell类型 最简单的方法就是在终端输入echo $0&#xff0…

编写一个每次随机生成 10个 0(包括) 到 100 之间的随机正整数。

编写一个每次随机生成 10个 0&#xff08;包括&#xff09; 到 100 之间的随机正整数。 package cn.itcast.example;import java.util.Iterator; import java.util.Random; public class example {public static void main (String[] arge) {System.out.println("Math.ra…

【微机原理】v和∧区别

&#x1f31f; 嗨&#xff0c;我是命运之光&#xff01; &#x1f30d; 2024&#xff0c;每日百字&#xff0c;记录时光&#xff0c;感谢有你一路同行。 &#x1f680; 携手启航&#xff0c;探索未知&#xff0c;激发潜能&#xff0c;每一步都意义非凡。 在汇编语言和逻辑表达…

Android使用内容提供器(ContentProvider)实现跨程序数据共享

文章目录 Android使用内容提供器&#xff08;ContentProvider&#xff09;实现跨程序数据共享新建内容提供器DatabaseProvider修改DatabaseProvider中的代码AndroidManifest.xml文件中注册provider修改activity_main.xml中的代码修改MainActivity中的代码运行ProviderTest项目 …

mysql查询慢除了索引问题还会是因为什么?

问题 作为一个程序员SQL查询慢的问题在工作和面试中都是会经常遇到的问题, 一般情况下我们都会联想到索引问题, 那么除了索引问题还有什么其他的场景会导致SQL查询慢呢? MySQL执行查询逻辑 例如我们使用可视化工具执行这样一条SQL: select * from user_info where age 10;…

Java:寻找最长连续序列

Java实现寻找最长连续序列 引言问题描述设计思路实现代码 代码解释单元测试 总结 引言 在面对大规模数据集时&#xff0c;经常需要识别出其中的连续子序列&#xff0c;这一任务在诸多领域如股票市场分析、天气预报等方面尤为关键&#xff0c;因为连续性的数据往往承载了重要的…

MacBook真的不能打游戏吗?Mac打游戏会损坏电脑吗?苹果电脑怎么玩游戏

MacBook从来都是高端的代名词&#xff0c;超强的性能搭配顶尖的系统&#xff0c;不光处理大型文件时举重若轻&#xff0c;长期使用也不会有明显卡顿。但很多人在需要MacBook一流的生产力同时&#xff0c;也希望能在空闲时体验游戏的乐趣。在大多人的印象里&#xff0c;Mac电脑对…

剑指offerJZ24 反转链表

描述&#xff1a; 给定一个单链表的头结点pHead(该头节点是有值的&#xff0c;比如在下图&#xff0c;它的val是1)&#xff0c;长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。 数据范围&#xff1a; 0≤n≤10000≤n≤1000 要求&#xff1a;空间复杂度 O(1)&…

大模型本地化部署1-Ollama安装(Windows)

大模型本地化部署1-Ollama安装&#xff08;Windows&#xff09; 1、下载Ollama安装包2、安装Ollama3、设置模型存放目录4、查看Ollama支持的模型5、模型安装6、查看已安装的模型列表7、运行一个模型8、设置Ollama允许外放访问 1、下载Ollama安装包 Ollama官网地址 https://oll…

【数据结构】二叉树基础(带你详细了解二叉树)

&#x1f30f;个人博客主页&#xff1a;心.c ​ 前言&#xff1a;最近学习了二叉树&#xff0c;和大家分享一下我的理解和感悟&#xff0c;希望对大家有所帮助&#xff0c;话不多说&#xff0c;开整&#xff01;&#xff01;&#xff01; &#x1f525;&#x1f525;&#x1f5…

示波器测量交流市电的注意事项

先说结论&#xff1a; 测量交流电或者市电的时候&#xff0c;注意示波器的电源千万不要用那种带GND的三角插头&#xff0c;可以用双脚插头但要小心漏电&#xff0c;示波器外壳金属部分可能带电&#xff1a; 当示波器的探头探针接L&#xff0c;黑色架子接N&#xff0c;这个时候…

YOLOv8改进 | 模块缝合 | C2f融合卷积重参数化OREPA【CVPR2022】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

python自动化操作PDF,拆分pdf合并pdf,提取pdf内容

第三方库介绍 Python 操作 PDF 会用到两个库&#xff0c;分别是&#xff1a;PyPDF2 和 pdfplumber。 PyPDF2 可以更好的读取、写入、分割、合并PDF文件&#xff1b; pdfplumber 可以更好的读取 PDF 文件中内容和提取 PDF 中的表格&#xff0c;主要应用于机器生…

Redis基础知识学习笔记(二)

文章目录 一.Redis安装1.Windows 下安装1>资源管理器目录进入2>目录进入命令:3.配置环境变量 2.Linux 下安装1> 安装redis2> 启动redis3> 查看 redis 是否启动 二.Redis配置1. 查看配置2. 编辑配置3. 参数说明 三.Redis数据类型1. String&#xff08;字符串&…

JVM学习《类加载运行-jvm内存模型》

目录 1.类加载过程 1.1 加载过程详解 1.2 类加载器 2.类加载器和双亲委派机制 3.JVM的内存模型 4.那些是GC Roots的对象有哪些&#xff1f; 1.类加载过程 通过类加载器加载主类到JVM&#xff0c;加载过程可以分为五个主要阶段&#xff1a;加载、验证、准备、解析、初始化。…

PyTorch中使用Transformer对一维序列进行分类的源代码

在PyTorch中使用Transformer对一维序列进行分类是一种常见做法&#xff0c;尤其是在处理时间序列数据、自然语言处理等领域。Transformer模型因其并行化处理能力和自注意力机制而成为许多任务的首选模型。 下面是一个使用PyTorch实现Transformer对一维序列进行分类的完整示例代…