又要考试了

一、实现无名管道练习:父进程写入管道,子进程读取管道数据。

#include<myhead.h>
int main(int argc, const char *argv[])
{int fd[2];char buff[1024]="王吕阳,崔庆权别卷了";char s[1024];if(pipe(fd)==-1){perror("pipe");return -1;}pid_t pid = fork();if(pid==0){close(fd[1]);//关闭写端while(1){sleep(1);read(fd[0],s,sizeof(s));printf("展旗善意提醒:%s\n",s);}close(fd[0]);//关闭读端}else if(pid>0){close(fd[0]);//关闭读端while(1){sleep(1);write(fd[1],buff,sizeof(buff));}close(fd[1]);}else{perror("fork");return -1;}return 0;
}

二、有名管道练习实现一遍练习:创建2个子父进程,父进程写入管道1,子进程读取管道2,父进程写入管道2,子进程读取管道1,实现全双工通信。

#include<myhead.h>
int main(int argc, const char *argv[])
{int fd1 = open("./a",O_WRONLY);int fd2 = open("./b",O_RDONLY);char arr[1024];char brr[1024];if(fd1==-1||fd2==-1){perror("open");return -1;}pid_t pid = fork();if(pid>0){while(1){printf("请输入内容:");int res = read(0,arr,sizeof(arr));write(fd1,arr,res);}close(fd1);}else if(pid==0){while(1){int ress = read(fd2,brr,sizeof(brr));if(ress==0){printf("退出\n");break;}write(1,brr,ress);}close(fd2);}else{perror("fork");return -1;}return 0;
}
#include<myhead.h>
int main(int argc, const char *argv[])
{int fd1 = open("./a",O_RDONLY);int fd2 = open("./b",O_WRONLY);char arr[1024];char brr[1024];if(fd1==-1||fd2==-1){perror("open");return -1;}pid_t pid = fork();if(pid>0){while(1){printf("请输入内容:");int ress = read(0,brr,sizeof(brr));write(fd2,brr,ress);}close(fd2);}else if(pid==0){while(1){int res = read(fd1,arr,sizeof(arr));if(res==0){printf("退出\n");break;}write(1,arr,res);}close(fd1);}else{perror("fork");return -1;}return 0;
}

三、进程间通信信号的默认,忽略,捕获实现一遍。

#include<myhead.h>
void a(int b)
{if(b==SIGTSTP){printf("A\n");}
}
int main(int argc, const char *argv[])
{
/*	if(signal(SIGINT,SIG_IGN)==SIG_ERR){perror("signal");return -1;}if(signal(SIGINT,SIG_DFL)==SIG_ERR){perror("signal");return -1;}*/if(signal(SIGTSTP,a)==SIG_ERR){perror("signal");return -1;}int k=0;while(1){sleep(1);printf("按k=%d\n",k);k++;}return 0;
}

四、思维导图

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

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

相关文章

LoadBalancer负载均衡和Nginx负载均衡区别理解

LoadBalancer和Nginx都是用来做负载均衡用的&#xff0c;那二者有什么区别呢&#xff1f; Nginx服务器端的负载均衡&#xff1a; 所有请求都先发到nginx&#xff0c;然后再有nginx转发从而实现负载均衡。LoadBalancer是本地的负载均衡&#xff1a; 它是本地先在调用微服务接口…

Linux shell脚本练习(六)

清除系统默认文件缓存/tmp中超过30天未访问的文件 #!/bin/bash# 临时文件存放的目录 TEMP_DIR"/tmp" # 设置保留文件的天数 RETENTION_DAYS30# 判断临时目录是否存在 if [ ! -d "$TEMP_DIR" ]; thenecho "临时目录 $TEMP_DIR 不存在&#xff01;&quo…

【MQTT 编程】-API

文章目录 1 MQTTClient_message 结构体2 创建客户端对象3 连接服务端3 设置回调函数4 发布消息5 订阅主题和取消订阅主题5.1 订阅主题5.2 取消订阅 6 断开服务连接 1 MQTTClient_message 结构体 很重要的结构体&#xff0c;客户端应用程序发布消息和接收消息都是围绕这这个结构…

Technitium DNS Server的基本使用1(创建主区域,A记录,开启递归查询,递归到114.114.114.114)

Technitium DNS Server Technitium DNS Server搭建 搭建请看博主的上篇博客&#xff0c;内外网的方法都有 链接: 内网搭建Technitium DNS Server详细教程 登陆进去是以下界面 这个界面主要是监控&#xff0c;有访问的时候就会有波动 创建主区域&#xff0c;A记录 写上主区…

OpenAI 与 ChatGPT 的关系解析

OpenAI 与 ChatGPT 的关系解析 基本关系 OpenAI 是公司&#xff0c;ChatGPT 是产品 OpenAI 是一家人工智能研究公司ChatGPT 是 OpenAI 开发的一款 AI 聊天产品ChatGPT 使用的是 OpenAI 开发的 GPT&#xff08;Generative Pre-trained Transformer&#xff09;模型 OpenAI 的…

Git简介和特点

目录 一、Git简介 二、Git特点 1.集中式和分布式 (1)集中式版本控制系统 (2)分布式版本控制系统 2.版本存储方式的差异 (1)直接记录快照&#xff0c;而非差异比较 3.近乎所有操作都是本地执行 一、Git简介 Git是目前世界上最先进的的分布式控制系统&#xff08;没有之一…

CSS学习记录15

CSS下拉菜单 使用CSS创建可悬停的下拉列表。 下拉式式菜单 .dropdown类使用position:relative,当我们希望将下拉内容放置在下拉按钮的正下方(使用position:absolute)时&#xff0c;需要使用该类。 .dropdown-content 类保存实际的下拉内容。默认情况下它是隐藏的&#xff0…

《国产单片机,soc的一些现实问题》

大概从口罩开始&#xff0c;芯片断供。在中低端市场&#xff0c;国外mcu&#xff0c;国外soc趁机抢占了大量市场份额。 但是因为大家都用国外了&#xff0c;价格优势依然不明显。 有一些没有核心技术的公司&#xff0c;或老板业务或采购出身&#xff0c;不懂技术。 在一堆芯片面…

AdminJS - 现代化的 Node.js 管理面板框架详解

AdminJS - 现代化的 Node.js 管理面板框架详解 什么是 AdminJS? AdminJS 是一个自动化的管理面板框架&#xff0c;专为 Node.js 应用程序设计。它可以让开发者快速构建功能强大的管理后台界面&#xff0c;而无需编写大量重复的代码。 主要特点 自动 CRUD 操作 自动生成增删…

RabbitMQ全局流量控制

RabbitMQ全局流量控制 流控机制流控是对什么进行控制&#xff1f;rabbitmq进程邮箱流控机制是什么&#xff1f; 流控原理流控原理流程 流控状态显示流控对象流控机制对象主要进程各进程状态情形分析 性能提升提升队列性能方式 当消息积压时&#xff0c;消息会进入到队列深处&am…

大数据平台

大数据行业应用持续升温&#xff0c;特别是企业级大数据市场正在进入快速发展时期。越来越多的企业期望实现数据孤岛的打通&#xff0c;整合海量的数据资源&#xff0c;挖掘并沉淀有价值的数据&#xff0c;进而驱动更智能的商业。随着公司数据爆发式增长&#xff0c;原有的数据…

鸿蒙生态的崛起:开发实践、认证路径与激励策略

目录 前言 鸿蒙生态能力和行业解决方案 1、鸿蒙创新能力 2、鸿蒙行业解决方案 中软鸿蒙生态业务布局 1、深度参与鸿蒙生态建设 2、提供一站式鸿蒙生态服务 &#xff08;1&#xff09;服务目录 &#xff08;2&#xff09;改造过程的关键点 &#xff08;3&#xff09;鸿…

Vue如何来处理动画

Vue 提供了多种方式来处理动画&#xff0c;使得创建动态用户界面变得简单而灵活。以下是几种关于 Vue 动画的技巧和最佳实践&#xff0c;帮助你更高效地在项目中实现动画效果&#xff1a; 1. 使用 <transition> 和 <transition-group> 组件 Vue 内置的 <trans…

指令遵循数据集IFEval介绍:中英双语

IFEval数据集介绍&#xff1a;评估大语言模型指令遵循能力 1. IFEval数据集提出的问题 随着大语言模型&#xff08;如GPT-4、PaLM 2等&#xff09;在自然语言任务中的广泛应用&#xff0c;模型的指令遵循能力&#xff08;Instruction Following&#xff09;成为一个重要评估指…

Rust中自定义Debug调试输出

在 Rust 中&#xff0c;通过为类型实现 fmt::Debug&#xff0c;可以自定义该类型的调试输出。fmt::Debug 是标准库中的一个格式化 trait&#xff0c;用于实现 {:?} 格式的打印。这个 trait 通常通过自动派生&#xff08;#[derive(Debug)]&#xff09;来实现&#xff0c;但你也…

【git使用】git patch操作的常用命令:patch -p1 < xxxx.patch

patch -p1 < xxxx.patch 是一个在 Unix/Linux 系统中常用的命令&#xff0c;其主要含义如下&#xff1a; 一、patch 命令 patch 是一个用于对文件进行补丁操作的工具。补丁文件&#xff08;通常是 .patch 文件&#xff09;包含了对原始文件的修改信息&#xff0c;这些修改可…

基于Qt的上位机通讯库

1.前言 做Qt上位机已经有两年的时间了&#xff0c;上位机主要是和下游器件打交道的&#xff0c;通过modbus、tcp、串口等协议来控制这些设备&#xff0c;通过一定的时序控制&#xff0c;完成所需要的工作流程。这其中最重要的就是通讯了&#xff0c;上位机开发过程中的相当一部…

《Kali Linux 软件源更换攻略:优化软件获取与系统更新》

KALI为什么要换源 速度提升 Kali Linux 默认的软件源服务器通常位于国外。在从这些国外源下载软件包、更新系统时&#xff0c;会受到网络带宽、网络延迟等因素的限制。例如&#xff0c;在中国&#xff0c;连接到国外服务器的网络速度可能较慢&#xff0c;尤其是在下载大型软件…

docker安装mysql5.7

1、宿主机创建映射目录 mkdir -p /data/mysql/log mkdir -p /data/mysql/data mkdir -p /data/mysql/conf这里我放在了/data/mysql目录下 2、拉取mysql镜像 docker pull mysql:5.7注意是5.7版本&#xff0c;如果是8版本操作会略有不同&#xff0c;下篇文章介绍安装8版本的操…

RabbitMQ 安装、配置和使用介绍 使用前端js直接调用方式

1. 安装 RabbitMQ 1.1 安装 Erlang RabbitMQ 是基于 Erlang 语言开发的&#xff0c;因此首先需要安装 Erlang。 在 Ubuntu 上安装 Erlang&#xff1a; bash sudo apt-get update sudo apt-get install erlang 在 CentOS 上安装 Erlang&#xff1a; bash sudo yum insta…