【Linux 进程间通信】管道

文章目录

      • 1.System V 标准介绍
      • 2.进程间通信的方式?
      • 3.管道(匿名管道)

1.System V 标准介绍

①🍎 System V 实际上就是一个标准(“ 行业领头羊制定出来的专利 " )
在这里插入图片描述

2.进程间通信的方式?

①消息队列;②共享内存;③信号量;

上面这三种是有比较成型的标准才有的,后面慢慢形成较为复杂模板的通信方式,那么在此之前有没有更为简单的通信方式呢?

答案肯定是有的,就是 管道直接复用内核代码进行通信

3.管道(匿名管道)

①🍎为什么父子进程会向同一个显示器终端打印数据呢?

因为父进程 fork()一个子进程,子进程继承父进程,所以两个进程的文件描述符表一样,所以查表可知同同一个显示器终端打印。

②🍎 进程会默认打开三个标准输入输出错误:0,1,2…怎么做到的呢?

他们都是 bash 的子进程,bash父进程打开了,所以子进程就会打开。

③🍎 为什么我们子进程主动 close(0/1/2),不会影响父进程使用显示器文件呢?

从下图可知,我们只需要把子进程的文件描述符信息表中的指针进行修改即可;

在这里插入图片描述


细节注意点:❗
①🍌管道只允许单向通信,即:父----->子(父进程写,子进程读)或者 子---->父(子进程写,父进程读),不可两者都同时写;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


①🍎父子之后要关闭不需要使用的 fd(读或者写接口),为什么要在开始的时候全部打开呢?

为了子进程继承父进程的读写,因为如果父进程只有写的话,子进程也只能有写,如果子进程之后想要读的话,就不可以了;

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

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

相关文章

java中常用的6条设计模式及其设计原则

在Java中,设计模式是用于解决特定上下文中常见问题的最佳实践解决方案,广泛用于编写易于维护、扩展和理解的代码。这里我将介绍六种常用的设计模式及其对应的设计原则: 1. 单例模式 (Singleton) 设计原则: 确保一个类只有一个实例&#xff…

linux下摄像头设置固定的设备名

目录 2.热插拔udev机制 3.设置udev的规则 1.查看usb ID 2. 查看usb设备的信息 3.编译规则 4.拓展 1.问题的出现 通过我之前的文章配置完摄像头的开机自启动之后我们会发现有的时候会出现启动不了的情况,通过实验我发现是摄像头的设备名发生了改变,…

ADSP-21479的开发详解五(AD1939 C Block-Based Talkthru 48 or 96 kHz)音频直通

硬件准备 ADSP-21479EVB开发板: 产品链接:https://item.taobao.com/item.htm?id555500952801&spma1z10.5-c.w4002-5192690539.11.151441a3Z16RLU AD-HP530ICE仿真器: 产品链接:https://item.taobao.com/item.htm?id38007…

leetcode821-Shortest Distance to a Character

题目 给你一个字符串 s 和一个字符 c ,且 c 是 s 中出现过的字符。 返回一个整数数组 answer ,其中 answer.length s.length 且 answer[i] 是 s 中从下标 i 到离它 最近 的字符 c 的 距离 。 两个下标 i 和 j 之间的 距离 为 abs(i - j) ,其…

普通索引和唯一索引如何选择

查询过程 普通索引和唯一索引的性能差别不大。 因为引擎是按页读写的,按条件查询的话它所在的数据页就都在内存里了,即使普通索引还有其他的操作,但是我们计算平均性能差异时,仍可以认为这个操作成本对于现在的CPU来说可以忽略不计…

开源数据集分享——猫脸码客

开源数据集分享,让数据更自由流通——猫脸码客带你走进数据的新世界 在数字化时代的浪潮中,数据已经成为推动社会进步的重要力量。然而,数据的获取与利用往往受到种种限制,使得许多有价值的信息难以被充分挖掘。幸运的是&#xf…

linux下安装mysql和主从搭建_亲测成功

linux下安装mysql和主从搭建_亲测成功 linux下安装mysql yum list installed | grep mysql #查看系统中是否已安装mysql软件yum -y remove mysql-libs.x86_64 #删除mkdir -pv /data/softwarecd /data/software/wget http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.2…

适配器模式【结构型模式C++】

1.概述 适配器模式是一种结构型设计模式, 又称为变压器模式、包装模式(Wrapper) 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 2.结构 Target:适配…

Leetcode算法训练日记 | day31

专题九 贪心算法 一、分发饼干 1.题目 Leetcode:第 455 题 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的…

MongoDB的使用场景

MongoDB的使用场景 MongoDB 是一个流行的文档型 NoSQL 数据库,适用于处理结构灵活、快速变化的数据以及需要高性能、高可用性和水平扩展能力的应用场景。以下是 MongoDB 的主要使用场景: Web & Mobile Applications: 实时数据处理:Mongo…

【算法一则】矩阵置零 【矩阵】【空间复用】

题目 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2: …

冰达ROS机器人快速使用指南

欢迎来到《冰达ROS机器人极简使用指南》 Q:这份教程适合谁? A:适合完全0基础新手,需要快速跑起来机器人的基本功能。也适合技术大佬需要快速的了解冰达ROS机器人的使用方法。 Q:这份教程内容很少,是不是…

c# 反射的应用

简述: 反射指程序可以访问、检测和修改它本身状态或行为的一种能力。 程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。 您可以使用使用反射获取类型,根据类型来动态创建对象&#…

机器学习基本流程

Jupyter Notebook 代码连接: machine_learning_demo machine_learning_ensembles Step 1: Imports and Configuration import pandas as pd import numpy as np import copy import json import pickle import joblib import lightgbm as lgb import optuna impor…

【24届数字IC秋招总结】正式批面试经验汇总8——豪威、大普微

文章目录 一、豪威-数字电路设计工程师1.1 面试问题二、大普微-数字验证工程师2.1 一面面试问题2.2 二面面试问题2.3 hr面试问题一、豪威-数字电路设计工程师 面试时间:9.6 1.1 面试问题 1、 logic能不能随机产生x和z,如何产生 2、 断言怎么写的,a为高b为高 3、 讲下项目…

数据结构——7.17.2 查找的基本概念、顺序查找和折半查找

7.1&7.2 查找的基本概念、顺序查找和折半查找 1. 基本概念 1. 关键字:数据元素中标识该元素的某个数据项的值,使用基于关键字的查找,查找结果应该是唯一的。2. 查找表的常见操作1. 查找符合条件的数据元素:查得快即可2. …

国产数据库实践:亚信安慧AntDB在DTC 2024展示创新实力

4月12至13日,我国数据库行业最具影响力的活动之一——第十三届『数据技术嘉年华』(DTC 2024) 在京成功举办,业内众多专家学者、技术领袖、各行业客户和实力厂商均到场参会。亚信安慧AntDB数据库总架构师洪建辉受邀参与“数据库一体化”专题论坛&#xff…

Stylus精讲:网页设计新境界【写作AI一键生成】

首先,这篇文章是基于笔尖AI写作进行文章创作的,喜欢的宝子,也可以去体验下,解放双手,上班直接摸鱼~ 按照惯例,先介绍下这款笔尖AI写作,宝子也可以直接下滑跳过看正文~ 笔尖Ai写作:…

《HCIP-openEuler实验指导手册》1.1Apache安装与测试

一、安装httpd 查看软件仓库中apache版本列表 dnf provides http 安装apache dnf install -y httpd 二、启动http并测试 查看apache版本号 httpd -v 检查配置文件是否正确 httpd -t 启动并设置为开机启动 systemctl enable httpd --now 或 systemctl enable httpd syst…

Android--ConnectivityManager使用

一、前言 Android10之后官方废弃了通过WifiManager连接WIFI的方式,现在要使用ConnectivityManager连接WIFI 二、连接WIFI public class MainActivity extends AppCompatActivity {private static final String TAG"lkx";Overrideprotected void onCrea…