当前位置: 首页 > news >正文

进程间通信

#include <unistd.h>

    int pipe(int pipefd[2]);

    功能:创建一个匿名管道,用于进程间通信

    参数:

        -int pipefd[2]:传出参数

            pipefd[0]对应的是管道的读端

            pipefd[0]对应的是管道的写端

    返回值:

        成功返回0,失败返回-1

管道默认是阻塞的,如果管道中没有数据,read阻塞,如果管道满了,write阻塞

    注意:匿名管道只能用于具有关系的进程之间的通信(父子进程、兄弟进程)

1.子进程写数据,父进程读数据并输出

//子进程发送数据给父进程,父进程读取到数据输出
#include <unistd.h>
#include<sys/types.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main() {//在fork之前创建管道int pipefd[2];int ret = pipe(pipefd);if(ret == -1) {perror("pipe");exit(0);}//创建子进程pid_t pid = fork();if(pid > 0) {//父进程//从管道读取端读取数据char buf[1024] = {0};int len = read(pipefd[0], buf, sizeof(buf));printf("parent recv : %s, pid: %d\n", buf, getpid());} else if(pid == 0){//子进程//在管道中写入数据char * str = "hello, i am child";write(pipefd[1], str, strlen(str));}return 0;
}

2.子进程持续写数据,父进程持续接收

//子进程发送数据给父进程,父进程读取到数据输出
#include <unistd.h>
#include<sys/types.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main() {//在fork之前创建管道int pipefd[2];int ret = pipe(pipefd);if(ret == -1) {perror("pipe");exit(0);}//创建子进程pid_t pid = fork();if(pid > 0) {//父进程//从管道读取端读取数据printf("i am parent process, pid: %d\n", getpid());char buf[1024] = {0};while(1) {int len = read(pipefd[0], buf, sizeof(buf));printf("parent recv : %s, pid: %d\n", buf, getpid());}} else if(pid == 0){//子进程printf("i am child process, pid: %d\n", getpid());while(1) {//在管道中写入数据char * str = "hello, i am child";write(pipefd[1], str, strlen(str));sleep(1);}}return 0;
}

3.父子进程都能读和写数据

//子进程发送数据给父进程,父进程读取到数据输出
#include <unistd.h>
#include<sys/types.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main() {//在fork之前创建管道int pipefd[2];int ret = pipe(pipefd);if(ret == -1) {perror("pipe");exit(0);}//创建子进程pid_t pid = fork();if(pid > 0) {//父进程//从管道读取端读取数据printf("i am parent process, pid: %d\n", getpid());char buf[1024] = {0};while(1) {//在管道中读取数据int len = read(pipefd[0], buf, sizeof(buf));printf("parent recv : %s, pid: %d\n", buf, getpid());//在管道中写入数据char * str = "hello, i am parent";write(pipefd[1], str, strlen(str));sleep(1);}} else if(pid == 0){//子进程printf("i am child process, pid: %d\n", getpid());char buf[1024] = {0};while(1) {//在管道中写入数据char * str = "hello, i am child";write(pipefd[1], str, strlen(str));sleep(1);//在管道中读取数据int len = read(pipefd[0], buf, sizeof(buf));printf("child recv : %s, pid: %d\n", buf, getpid());}}return 0;
}

4.查看管道缓冲大小

 

#include <unistd.h>
#include<sys/types.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>int main() {int pipefd[2];int ret = pipe(pipefd);//获取管道大小long size = fpathconf(pipefd[0], _PC_PIPE_BUF);printf("pipe size: %ld\n", size);return 0;
}

相关文章:

进程间通信

#include <unistd.h> int pipe(int pipefd[2]); 功能&#xff1a;创建一个匿名管道&#xff0c;用于进程间通信 参数&#xff1a; -int pipefd[2]:传出参数 pipefd[0]对应的是管道的读端 pipefd[0]对应的是管道的写端 返回值&#xff1a; 成功返回0&#xff0c;失败返回-…...

Ubuntu 22.04.3 LTS安装

最近换电脑了&#xff0c;准备重新装一下ubuntu。多年前装过ubuntu很老的版本&#xff0c;现在发现官网最新的LTS版本是 Ubuntu 22.04.3 LTS 版本。那重新装的话&#xff0c;肯定装最新的版本了。这里我记录下自己的安装过程&#xff0c;作为以后的笔记查看。 我的环境&#x…...

记一次manjaro-i3系统sogoupinying候选词无法正常显示中文(变方框了)问题解决方案

记一次manjaro-i3系统sogoupinying候选词无法正常显示中文&#xff08;变方框了&#xff09;问题解决方案 前言解决方案 前言 今天早上发现公司电脑显卡驱动好像坏了&#xff0c;各种折腾完了干脆把系统搞黑屏无法开机了&#xff0c;时间有限懒再修了&#xff0c;于是重装了系…...

Lua学习笔记:词法分析

前言 本篇在讲什么 Lua的词法分析 本篇需要什么 对Lua语法有简单认知 对C语法有简单认知 依赖Visual Studio工具 本篇的特色 具有全流程的图文教学 重实践&#xff0c;轻理论&#xff0c;快速上手 提供全流程的源码内容 ★提高阅读体验★ &#x1f449; ♠ 一级标题…...

flask服务鉴权

基本认证&#xff08;Basic Authentication&#xff09;&#xff1a; 这是一种简单的鉴权方式&#xff0c;需要客户端发送用户名和密码&#xff0c;服务器验证后允许或拒绝访问。可以使用 Flask-BasicAuth 扩展来实现。首先&#xff0c;安装扩展&#xff1a; pip install Fla…...

【2023华为杯B题】DFT类矩阵的整数分解逼近(思路及代码下载)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

基于微信小程序的校园生活管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言运行环境学生微信端的主要功能有&#xff1a;管理员的主要功能有&#xff1a;具体实现截图视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝1…...

SQL server 创建存储过程

SQL Server如何创建存储过程 存储过程&#xff1a; 可以理解为完成特定功能的一组 SQL 语句集&#xff0c;存储在数据库中&#xff0c;经过第一次编译&#xff0c;之后的运行不需要再次编译&#xff0c;用户通过指定存储过程的名字并给出参数&#xff08;如果该存储过程带有参数…...

一文了解亚马逊云科技适用于 Amazon Lightsail 的托管数据库

Amazon Lightsail 是亚马逊云科技提供的一种易上手使用、月度价格经济实惠&#xff0c;并包括了计算实例、容器、存储、数据库的虚拟专用服务器。在创建时可以进行业务蓝图选择&#xff0c;可选择包含多种操作系统&#xff08;Linux/Windows 等&#xff09;或操作系统加上典型应…...

【antd Col】奇怪的TypeError: Cannot read properties of undefined (reading ‘then‘)

现象 修改antd的Col组件的layouts属性为span后&#xff0c;并通过监听resize事件对span列宽进行动态变化时&#xff0c;报错TypeError: Cannot read properties of undefined (reading ‘then‘)。 补充示例一 由于我使用了飞冰ice.js&#xff0c;且在以下过程中写了如下语句…...

requests处理 multipart/form-data 请求以及 boundary值问题

requests处理 multipart/form-data 请求以及 boundary值问题 前言1. 请求需要携带本地资源2. 请求需要携带json3. 总结 前言 关于 Content-type: multipart/form-data可以看一下这篇文章, 分析特别详细 HTTP协议之multipart/form-data请求分析 put和post区别不大, 只是上传资…...

FBX文件结构解读【文本格式】

FBX 格式几乎受到所有 3D 引擎的支持&#xff0c;是 Autodesk 开发的 3D 模型的专有格式。它支持顶点、索引、法线、UV坐标、材质和动画。 FBX还支持许多其他类型的信息&#xff0c;但它们对游戏引擎几乎没有用处。 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 有两种…...

JS基础语法

JS是一门面向对象的编程语言&#xff0c;运行在客户端的脚本语言&#xff0c;可以基于Node.js进行服务器端编程 JS的作用: 表单动态校验网页特效服务端开发 浏览器执行JS&#xff1a; 浏览器分为两部分&#xff1a;渲染引擎和JS引擎 渲染引擎用来解析HTML和CSS&#xff0c;…...

【Zabbix监控一】zabbix的原理与安装

利用一个优秀的监控软件&#xff0c;我们可以: ●通过一个友好的界面进行浏览整个网站所有的服务器状态 ●可以在 Web 前端方便的查看监控数据 ●可以回溯寻找事故发生时系统的问题和报警情况 总结&#xff1a;zabbix主要功能 监控&#xff0c;cpu负载&#xff0c;内存使用&a…...

图的十字链表存储结构

1.其实就是邻接表和逆邻接表的结合&#xff0c;说明白点&#xff0c;就是用箭头表示出弧头&#xff0c;弧尾&#xff0c;以及他们之间的关系 2.顶点结构 3.弧结构 3.这样根据上面的结点十字链表结构就很好分析了...

精华回顾:Web3 前沿创新者在 DESTINATION MOON 共话未来

9 月 17 日&#xff0c;由 TinTinLand 主办的「DESTINATION MOON: Web3 Dev Summit Shanghai 2023」线下活动在上海黄浦如约而至。 本次 DESTINATION MOON 活动作为 2023 上海区块链国际周的 Side Event&#xff0c;设立了 4 场主题演讲与 3 个圆桌讨论&#xff0c;聚集了诸多…...

【RPC】gRPC 安装及使用

本文记录下 Mac 安装 gRPC 的过程。 参考&#xff1a;官网 1. gRPC 安装 gRPC 安装步骤如下&#xff1a; 克隆 grpc 代码 git clone --recurse-submodules -b v1.58.0 --depth 1 --shallow-submodules https://github.com/grpc/grpc注意&#xff1a;不要直接 git clone http…...

Pygame中Sprite类的使用3

在Pygame中Sprite类的使用2_棉猴的博客-CSDN博客中提到了通过派生自pygame.sprite.Sprite类的自定义类Zombie&#xff0c;可以实现一个僵尸的移动。可以通过pygame.sprite.Group类实现对多个Zombie类实例的管理&#xff0c;即可以实现多个僵尸的移动。 1 pygame.sprite.Group类…...

23年下考前须知-软考中级信息安全工程师

信息安全工程师主要涉及计算机信息安全方面&#xff0c;在计算机软硬件、网络、应用相关领域从事安全系统设计、安全产品开发、产品集成、信息系统安全检测与审计等方面工作&#xff0c;服务单位可以是国家机关、企事业单位及科研教学单位等。 一、考试报名时间 信安考试一年…...

关于表单快速开发低代码技术平台的内容介绍

运用什么样的表单快速开发软件平台可以实现高效率创收&#xff1f;随着科技的进步和飞速发展&#xff0c;专业的低代码技术平台已经走入了很多企业的办公职场中&#xff0c;它们灵活、轻量级、优质、高效、易维护等优势特点&#xff0c;可以高效助力广大企业提质增效&#xff0…...

Linux 核心操作合集(网络配置、XShell远程连接、vim文本编辑与操作、权限管理 实操手册)

一、网络连接管理&#xff08;nmli&#xff09;&#xff08;一&#xff09;nmcli命令行配置IPtylmyhost:~$ nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.24.24/24 tylmyhost:~$ nmcli connection modify ens160 ipv4.gateway 192.168.24.2 tyl…...

预制指标、宽表、SQL、本体ABC:真正决定长期成本的,是一次变更会波及多少层

企业做智能问数&#xff0c;最常见的比较题是&#xff1a;预制指标、宽表、人工 SQL、本体ABC&#xff0c;到底哪条路线维护成本更低&#xff1f;如果只给一个笼统答案&#xff0c;往往容易失真。因为真正决定长期成本的&#xff0c;不是“今天开发快不快”&#xff0c;也不是“…...

从idea ai插件到在线原型:用快马平台快速构建你的智能代码生成器

最近在开发中频繁使用IDEA的AI插件辅助编码&#xff0c;发现这类工具能大幅减少重复劳动。但插件功能往往局限于当前IDE环境&#xff0c;于是萌生了一个想法&#xff1a;能否把这种智能生成能力搬到线上&#xff0c;做成一个轻量级的Web工具&#xff1f;经过在InsCode(快马)平台…...

AFL++实战:从零开始用WSL搭建模糊测试环境(附libxml2案例)

AFL实战指南&#xff1a;WSL环境下的模糊测试从入门到精通 模糊测试&#xff08;Fuzz Testing&#xff09;作为软件安全测试的重要手段&#xff0c;近年来在漏洞挖掘领域展现出惊人的效果。对于Windows平台开发者而言&#xff0c;Windows Subsystem for Linux&#xff08;WSL&…...

Mongo(2): MongoDB权限认证实战——从零配置用户角色与访问控制

1. MongoDB权限认证的必要性 第一次接触MongoDB时&#xff0c;很多人都会被它"开箱即用"的特性吸引——安装完成后不需要任何配置就能直接操作数据库。这种便利性在开发测试阶段确实很友好&#xff0c;但一旦进入生产环境&#xff0c;就相当于把自家大门敞开给所有人…...

打破系统壁垒:从 Android 到 macOS,打造全平台统一终端管理(MDM)方案

目录 什么是统一设备管理&#xff1f; 一、引言 二、为什么跨平台设备管理至关重要 三、统一设备管理平台的核心功能 3.1 多平台生态整合 3.2 全设备生命周期管理 3.3 统一策略配置 3.4 广泛的行业适用性 四、实施统一设备管理的优势 五、企业设备管理的未来趋势 六…...

网络通信技术基础知识,网络通信技术数据包介绍

网络通信技术是关键技术之一&#xff0c;对于网络通信技术&#xff0c;我们应对其有所了解。为增加大家对网络通信技术的认识&#xff0c;本文将对网络通信技术的数据包结构和原理予以介绍。如果你对网络通信技术存在兴趣&#xff0c;不妨继续往下阅读哦。 在网络通信中, "…...

乙巳马年·皇城大门春联生成终端W安全部署实践:网络配置与访问控制

乙巳马年皇城大门春联生成终端W安全部署实践&#xff1a;网络配置与访问控制 最近在星图GPU平台上部署了一个挺有意思的AI应用&#xff0c;叫“皇城大门春联生成终端W”。说白了&#xff0c;就是一个能根据你的要求&#xff0c;自动生成各种风格春联的AI模型。部署过程本身不难…...

解锁智能OCR新范式:Pix2Text多模态内容识别技术全解析

解锁智能OCR新范式&#xff1a;Pix2Text多模态内容识别技术全解析 【免费下载链接】Pix2Text Pix In, Latex & Text Out. Recognize Chinese, English Texts, and Math Formulas from Images. 项目地址: https://gitcode.com/gh_mirrors/pi/Pix2Text Pix2Text是一款…...

NCCL中RoCE与RDMA的深度解析:如何优化分布式训练网络性能

1. 为什么RoCE和RDMA对分布式训练如此重要&#xff1f; 第一次接触分布式训练时&#xff0c;我盯着日志里不断跳动的通信耗时直发愁。8块GPU明明都在满负荷运转&#xff0c;但总训练时间就是比单卡8要长不少。后来用NVIDIA的Nsight工具一分析&#xff0c;发现超过30%的时间都花…...