又名管道和无名管道

news2024/11/12 3:33:59

一、进程间通信(IPC,InterProcess Communication

概念:就是进程和进程之间交换信息。

常用通信方式

无名管道(pipe)

有名管道 (fifo)

信号(signal)

共享内存(mmap)

套接字(socket)

过时的IPC通信方式

System V IPC

共享内存(share memory)

消息队列(message queue)

信号灯集(semaphore set)

二、无名管道

int pipe(int pfd[2]); 成功:0;失败:-1,设置errno

pfd[0] 为读描述符

pfd[1] 为写描述符

无名管道注意事项:

1.只能用于亲缘关系的进程间通信(父子进程,兄弟进程)。

2.管道通信是单工的,一端读,一端写(程序实现设计好)。

3.数据自己读不能自己写。

4.管道可以用于大于2个进程共享。

5.无名管道创建时会返回两个文件描述符,分别用于读写管道。

无名管道的读写特性:

  • 读管道:

1. 管道中有数据,read返回实际读到的字节数。

2. 管道中无数据:

(1) 管道写端被全部关闭,read返回0 (好像读到文件结尾)

 (2) 写端没有全部被关闭,read阻塞等待(不久的将来可能有数据递达,此时会让出cpu)

  • 写管道:

1. 管道读端全部被关闭, 进程异常终止(也可使用捕捉SIGPIPE信号,使进程不终止)

2. 管道读端没有全部关闭:

3. 管道已满,write阻塞。(管道大小64K)

4.管道未满,write将数据写入,并返回实际写入的字节数。

三、有名管道(命名管道)

创建管道

#include <sys/types.h>

#include <sys/stat.h>

int mkfifo(const char *filename, mode_t mode);

open(const char *path, O_RDONLY);//1

open(const char *path, O_RDONLY | O_NONBLOCK);//2

open(const char *path, O_WRONLY);//3

open(const char *path, O_WRONLY | O_NONBLOCK);//4

特点:

1.有名管道可以使非亲缘的两个进程互相通信

2.通过路径名来操作,在文件系统中可见,但内容存放在内存中

3.文件IO来操作有名管道

4.遵循先进先出规则

5.不支持leek操作

6.单工读写

注意事项:

1.就是程序不能以O_RDWR(读写)模式打开FIFO文件进行读写操作,而其行为也未明确定义,因为如一个管道以读/写方式打开,进程可以读回自己的输出,同时我们通常使用FIFO只是为了单向的数据传递

2.第二个参数中的选项O_NONBLOCK,选项O_NONBLOCK表示非阻塞,加上这个选项后,表示open调用是非阻塞的,如果没有这个选项,则表示open调用是阻塞的

3.对于以只读方式(O_RDONLY)打开的FIFO文件,如果open调用是阻塞的(即第二个参数为O_RDONLY),除非有一个进程以写方式打开同一个FIFO,否则它不会返回;如果open调用是非阻塞的的(即第二个参数为O_RDONLY | O_NONBLOCK),则即使没有其他进程以写方式打开同一个FIFO文件,open调用将成功并立即返回。

4.对于以只写方式(O_WRONLY)打开的FIFO文件,如果open调用是阻塞的(即第二个参数为O_WRONLY),open调用将被阻塞,直到有一个进程以只读方式打开同一个FIFO文件为止;如果open调用是非阻塞的(即第二个参数为O_WRONLY | O_NONBLOCK),open总会立即返回,但如果没有其他进程以只读方式打开同一个FIFO文件,open调用将返回-1,并且FIFO也不会被打开。

5.数据完整性,如果有多个进程写同一个管道,使用O_WRONLY方式打开管道,如果写入的数据长度小于等于PIPE_BUF4K),那么或者写入全部字节,或者一个字节都不写入,系统就可以确保数据决不会交错在一起。

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

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

相关文章

数字化时代,低代码+进销存管理系统让你省时省力

进销存系统是一种用于管理企业物资流动和库存的软件系统&#xff0c;可以帮助企业优化物资管理过程&#xff0c;提高效率&#xff0c;减少成本&#xff0c;从而提升企业的盈利能力。本文将详细介绍进销存系统的定义、功能、好处以及如何选择适合自己企业的进销存系统&#xff0…

【嵌入式烧录/刷写文件】-2.6-剪切/保留Intel Hex文件中指定地址范围内的数据

案例背景&#xff1a; 有如下一段HEX文件&#xff0c;保留地址范围0x9140-0x91BF内的数据&#xff0c;删除地址范围0x9140-0x91BF外的数据。 :2091000058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775F :2091200078797A7B7C7D7E7F808182838485868788898A…

「ACL 2023」发榜!火山语音推出业内首个借助视频信息的端到端语音翻译模型

日前 ACL 2023的论文录用结果公布&#xff0c;火山语音团队多篇论文成功入选&#xff0c;内容涵盖音频合成、歌声合成以及语音翻译等多个前沿技术领域的创新突破。ACL&#xff08;Annual Meeting of the Association for Computational Linguistics&#xff09;每年由国际计算语…

Nginx服务器及其配置与应用

目录 一、Nginx的特点 1.高并发 2.低消耗 3.低消耗 4.高可用 5.高扩展 6.Nginx与Apache的差异 7.Nginx与Apache的区别 二、Linux中的I/O 1.I/O介绍 2.同步/异步 3.阻塞/非阻塞:关注调用者在等待结果返回之前所处的状态 三、编译安装Nginx服务 1.关闭防火墙&#…

SOLIDWORKS安装使用说明网络版

安装准备 系统要求&#xff1a;参考https://www.solidworks.com/sw/support/SystemRequirements.htmlSolidWorks 2017 是最蕞后一个支持win server 2008 R2 sp1的软件。 SolidWorks 2018支持win server 2012及以上的系统&#xff0c;但不支持win server 2019 SolidWorks 2019…

HNU-计算机系统-CSAPP作业答案

计算机系统CSAPP课后作业答案 计科210X wolf 202108010XXX 第2章 2.61 解: (!~x) || (!x) || (!~(x|0x00ffffff)) || (!(x&0x000000ff)) 或者: (!~x) || (!x) || (!~(x>>24)) || (!(x<<24)) 2.71 A. 实现的是逻辑位移,扩展后前面全是0,不符合符号扩…

Linux常见命令学习

目录 1.ls2.pwd3.cd (change directory)4.touch&&cat&&echo5.mkdir&&rm6.cp&&mv7.man8.less&&vim 1.ls 列出当前目录中包含的文件和目录~ 类似于在windows上双击某个目录&#xff0c;把他打开&#xff0c;看看目录里有啥~ ls -> l…

企业内容管理丨如何解决企业客户签收回执慢,缩短回款周期?

方案应用领域及行业 本方案适用于快消品行业的供应链管理和财务管理 方案应用背景 由于动产物权的政策变化&#xff0c;物权转移从交付时才开始发生效力。也就是说&#xff0c;新政之前&#xff0c;企业发出商品&#xff0c;开出销售发票&#xff0c;即可申请货物回款&#…

C# webapi接口传输byte[]数据,报错:415 Unsupported Media Type

最近需要做上传文件操作。 由于历史原因&#xff0c;以前的接口使用了这样的入参&#xff1a; 代码如下&#xff1a; /// <summary> /// 上传文件 /// </summary> [HttpPost] public Result<UploadImageResult> UploadFile(byte[] bytes, string extName, s…

html框架-----标签(上)

目录 前言&#xff1a; 标签简介 1. HTML的基本结构 (1)html标签 (2)head标签 &#xff08;3&#xff09;body标签 2. 标题标签 3. 段落标签 4. 文本格式化标签 前言&#xff1a; 现在学前端工程师的都很难找工作&#xff0c;懂的都懂了&#xff0c;因为学前端一般去做那…

console.log是异步还是同步?为什么console.log有时候不准

console.log是异步还是同步 在前端开发中&#xff0c;控制台console.log通常是同步的。这意味着&#xff0c;当代码执行到console.log语句时&#xff0c;它会立即写入到控制台中&#xff0c;并且JavaScript代码执行会在console.log完成后继续进行。 但是&#xff0c;在某些情况…

# croc用法实践(设备间文件或文件夹传输)

croc用法实践&#xff08;设备间文件或文件夹传输&#xff09; 文章目录 croc用法实践&#xff08;设备间文件或文件夹传输&#xff09;1 安装2 使用示例2.1 发送文件2.2 发送文件夹2.3 发送文本字符串2.4 发送时指定code&#xff0c;接收时自动【Y】&#xff0c;并保存到指定目…

《MySQL(一):基础篇-MySQL概述》

文章目录 1. MySQL概述1.1 数据库相关概念1.2 MySQL数据库1.2.1 版本1.2.2 下载1.2.3 安装1.2.4 启动停止1.2.5 客户端连接1.2.6 数据模型1. MySQL概述 1.1 数据库相关概念 先来了解三个概念:数据库、数据库管理系统、SQL。 而目前主流的关系型数据库管理系统的市场占有率…

ic验证的主要工作流程和验证工具是什么?

验证其实是一个“证伪”的过程&#xff0c;从流程到工具&#xff0c;验证工程师的终极目的都只有一个&#xff1a; 发现所有BUG&#xff0c;或者证明没有BUG&#xff0c;以保证芯片功能性能的正确性和可靠性。 验证环节对于一颗芯片的重要性也是不言而喻的&#xff1a; 从项…

VMware16安装Linux CentOS7完整教程(附下载地址)

一、准备工作 1.安装VMware Workstation Pro 16 &#xff08;1&#xff09;百度网盘下载地址 链接:https://pan.baidu.com/s/1jv0kQ26TLMt9MzofImRzgA?pwds0m1 提取码&#xff1a;s0m1 &#xff08;2&#xff09;VMware官网 https://www.vmware.com/cn &#xff08;2&#x…

广通优云徐育毅:筑基数字化,打造中国IT运维新范式

2023年2月&#xff0c;中共中央、国务院印发《数字中国建设整体布局规划》&#xff0c;数字技术与经济、政治、文化、社会等各领域融合愈发紧密&#xff0c;一册百花齐放、生机勃勃的数字化图卷正徐徐展开。 随着数字中国战略深入推进&#xff0c;IT运维作为核心领域受到关注。…

傻瓜式git管理。全平台,全编译器通用。github desktop+vscode

文章目录 前言Github desktop资源地址推荐理由操作介绍打开界面介绍Github账号登录Github仓库导入 从零开始新建Gitee仓库登录或注册gitee仓库Gitee新建仓库输入仓库名&#xff0c;添加gitignore,Readme什么是.gitignore什么是README 新建仓库效果github desktop使用新建本地仓…

Android播放器拖动进度条的小图预览

Android播放器拖动进度条的小图预览 背景效果图关键代码1. 获取指定位置的视频帧2. 预览图的显示和隐藏 完整代码1. xml布局文件activity_video.xml2. Activity文件VideoActivity.java 背景 我们在使用一些播放器时&#xff0c;拖动进度条会有一个预览框&#xff0c;上一篇博客…

海康、大华、tplink监控摄像头和硬盘录像机接入GB28181平台配置细节

海康、大华、tplink等各种型号监控摄像头或硬盘录像机(NVR/HVR)接入GB28181平台&#xff0c;配置过程都非常简单明了&#xff0c;但有些细节需要注意&#xff0c;避免走弯路踩泥坑。 首先要说明一点的是&#xff0c;只要监控设备和GB28181平台的网络是连通的&#xff0c;都可以…

5月第4周榜单丨飞瓜数据B站UP主排行榜单(哔哩哔哩)发布!

飞瓜轻数发布2023年5月22日-5月28日飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的B…