嵌入式Linux学习DAY26

管道的作用:进程间的通信

无名管道:

只能在父子进程中进行通信

          pipe
        int pipe(int pipefd[2]);
        功能:
            创建一个无名管道
        参数:
            pipefd[0]:读管道文件描述符
            pipefd[1]:写管道文件描述符
        返回值:
            成功返回0 
            失败返回-1 
        无名管道特性:
            1.管道中至少有一个写端: 
                读取数据时,如果管道中有数据直接读取,管道中没有数据阻塞等待直到有数据写入读出,继续向后执行
            2.管道中没有写端:
                读取数据时,如果管道中有数据直接读取,管道中没有数据不阻塞等待直接向下执行
            3.管道中至少有一个读端:
                写入数据时,如果管道中没有存满,则直接写入,管道中如果存满,则阻塞等待直到有数据读出,才能继续写入
            4.管道中没有读端:
                写入数据时,会产生管道破裂错误,导致程序崩溃


有名管道:


        打开管道文件 -> 读写管道文件 -> 关闭管道文件

        注意:有名管道必须读写两端同时加入才能继续向下执行

        1.mkfifo 
          int mkfifo(const char *pathname, mode_t mode);
          功能:
            创建一个管道文件
          参数:
            pathname:管道文件路径
            mode:权限
          返回值:
            成功返回0 
            失败返回-1 

有名管道的双工通信代码编写:

思路:两个文件,每个文件设两个进程,a进程用于发送信息,b进程用于接受信息

        memset函数

        void *memset(void *s, int c, size_t n);

        功能:将S中的值全赋成c-----将s初始化。

2.信号

实现内核层与用户层的信息交互,或者进程间的通信

2.1信号的种类:

kill-l 查询信号

kill -信号序号 +进程pid        对进程进行操作

2.2信号处理方式:

2.2.1缺省:默认方式

2.2.2忽略:不相应信号

2.2.3捕捉:按自定义方式处理

        9号SIGKILL,19号SIGSTOP不能被忽略和捕捉

        SIGINT:Ctrl+c

        SIGQUIT:ctrl+\

        SIGTSTP:ctrl+z

2.2.4signal

        void fun(int a);

        signal(SIGN,fun);        

        功能:
            改变信号的处理方式

        参数:SIGN:信号名称

                    fun:遇到信号后的处理方式的函数

        返回值:
            成功返回之前处理函数的首地址
            失败返回SIG_ERR 

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

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

相关文章

【InternLM 实战营笔记】基于 InternLM 和 LangChain 搭建MindSpore知识库

InternLM 模型部署 准备环境 拷贝环境 /root/share/install_conda_env_internlm_base.sh InternLM激活环境 conda activate InternLM安装依赖 # 升级pip python -m pip install --upgrade pippip install modelscope1.9.5 pip install transformers4.35.2 pip install str…

【大厂AI课学习笔记NO.53】2.3深度学习开发任务实例(6)数据采集

这个系列写了53期了,很多朋友收藏,看来还是觉得有用。 后续我会把相关的内容,再次整理,做成一个人工智能专辑。 今天学习到了数据采集的环节。 这里有个问题,数据准备包括什么,还记得吗? 数…

ZStack Cube超融合入选IDC《中国超融合基础架构市场评估》报告

近日,IDC发布了《中国超融合基础架构市场评估,2023》。IDC针对中国超融合基础架构市场的发展现状展开了调研,明确了最终用户构建融合型云平台的痛点和难点,阐述了市场中各技术服务提供商的服务方案和优势,并对未来中国…

vue3+ts+vite数据大屏自适应总结(两种方法)

总结一下我常用的数据大屏自适应方法 目录 1、通过css缩放方案: 利用transform:scale 进行适配2、采用rem布局, 根据屏幕分辨率大小不同,调整根元素html的font-size, 从而达到每个元素宽高自动变化,适配不…

接口测试实战--mock测试、日志模块

一、mock测试 在前后端分离项目中,当后端工程师还没有完成接口开发的时候,前端开发工程师利用Mock技术,自己用mock技术先调用一个虚拟的接口,模拟接口返回的数据,来完成前端页面的开发。 接口测试和前端开发有一个共同点,就是都需要用到后端工程师提供的接口。所以,当…

Redis速学

一、介绍Redis 基本概念和特点 Redis是一个开源的内存数据库,它主要用于数据缓存和持久化。其数据存储在内存中,这使得它具有非常快的读写速度。Redis支持多种数据结构,包括字符串、哈希、列表、集合和有序集合,这使得它非常灵活…

书生·浦语大模型图文对话Demo搭建

前言 本节我们先来搭建几个Demo来感受一下书生浦语大模型 InternLM-Chat-7B 智能对话 Demo 我们将使用 InternStudio 中的 A100(1/4) 机器和 InternLM-Chat-7B 模型部署一个智能对话 Demo 环境准备 在 InternStudio 平台中选择 A100(1/4) 的配置,如下图所示镜像…

微店商品详情 API 支持哪些商品信息的获取?

微店(Weidian)并没有一个公开的、官方维护的API文档来供开发者使用。这意味着,如果你想要获取微店商品详情或其他相关信息,你通常需要通过微店官方提供的方式来实现,例如使用其开放平台、官方SDK或联系微店的技术支持获…

Spring常见面试题知识点总结(三)

7. Spring MVC: MVC架构的概念。 MVC(Model-View-Controller)是一种软件设计模式,旨在将应用程序分为三个主要组成部分,以实现更好的代码组织、可维护性和可扩展性。每个组件有着不同的职责,相互之间解耦…

11.Prometheus常见PromeQL表达式

平凡也就两个字: 懒和惰; 成功也就两个字: 苦和勤; 优秀也就两个字: 你和我。 跟着我从0学习JAVA、spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美! 关注微信公众号【 IT特靠谱 】,每天都会分享技术心得~ …

YOLO算法

YOLO介绍 YOLO,全称为You Only Look Once: Unified, Real-Time Object Detection,是一种实时目标检测算法。目标检测是计算机视觉领域的一个重要任务,它不仅需要识别图像中的物体类别,还需要确定它们的位置。与分类任务只关注对…

【矩阵】【方向】【素数】3044 出现频率最高的素数

作者推荐 动态规划的时间复杂度优化 本文涉及知识点 素数 矩阵 方向 LeetCode 3044 出现频率最高的素数 给你一个大小为 m x n 、下标从 0 开始的二维矩阵 mat 。在每个单元格,你可以按以下方式生成数字: 最多有 8 条路径可以选择:东&am…

安装 Ubuntu 22.04.3 和 docker

文章目录 一、安装 Ubuntu 22.04.31. 简介2. 下载地址3. 系统安装4. 系统配置 二、安装 Docker1. 安装 docker2. 安装 docker compose3. 配置 docker 一、安装 Ubuntu 22.04.3 1. 简介 Ubuntu 22.04.3 是Linux操作系统的一个版本。LTS 版本支持周期到2032年。 系统要求双核 C…

C++的模板template

一、什么是模板 C中的模板分为类模板和函数模板,并不是一个实际的类或函数,这指的是编译器不会自动为其生成具体的可执行代码。只有在具体执行时,编译器才帮助其实例化。 二、为什么引入模板 拿我们最常见的交换函数来举例子,如果…

代码随想录 二叉树第二周

目录 101.对称二叉树 100.相同的树 572.另一棵树的子树 104.二叉树的最大深度 559.N叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数 110.平衡二叉树 257.二叉树的所有路径 101.对称二叉树 101. 对称二叉树 已解答 简单 相关标签 相关企业 给你一…

《求生之路2》服务器如何选择合适的内存和CPU核心数,以避免丢包和延迟高?

根据求生之路2服务器的实际案例分析选择合适的内存和CPU核心数以避免丢包和延迟高的问题,首先需要考虑游戏的类型和对服务器配置的具体要求。《求生之路2》作为一款多人在线射击游戏,其服务器和网络优化对于玩家体验至关重要。 首先,考虑到游…

Java应用程序注册成Linux系统服务后,关闭Java应用程序打印系统日志

Java应用程序有自己的日志框架,有指定位置的日志文件,不需要在系统日志里记录,占用磁盘空间。 1.Linux系统文件目录 /etc/systemd/system/ 找到要修改的Java应用程序服务配置 比如bis-wz-80.service 2.设置不打印日志 StandardOutputnull S…

centos7 搭建 harbor 私有仓库

一、下载安装 1.1、harbor 可以直接从 github 上下载:Releases goharbor/harbor GitHub 这里选择 v2.10.0 的版本 wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz 1.2、解压 tar zxvf harbor-offlin…

L2 网络 Mint Blockchain 正式对外发布测试网

Mint Blockchain 是由 NFTScan Labs 发起的聚焦在 NFT 生态的 L2 网络,致力于促进 NFT 资产协议标准的创新和 NFT 在现实商业应用场景中的大规模采用。 Mint Blockchain 于 2024 年 2 月 28 号正式对外发布测试网,开始全面进入生态开发者测试开发阶段。 …

2403C++,C++11玩转无栈协程

原文 C11里也能玩无栈协程了? 答案是:可以! 事实上异网在很早时,C11里就可用无栈协程写异步代码了,只不过用起来不太方便,来看看C11里怎么用异网无栈协程写一个回音服务器的吧. #包含 <异网.h> #包含 <内存> #包含 <向量> #包含 <异网/产生.h> 用 …