嵌入式Linux学习DAY26

2024-03-01 00:12
文章标签 linux 学习 嵌入式 day26

本文主要是介绍嵌入式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 

这篇关于嵌入式Linux学习DAY26的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/760557

相关文章

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

Linux grep 命令的使用指南

《Linuxgrep命令的使用指南》本文给大家介绍Linuxgrep命令的使用指南,包括基础搜索语法、实践指南,感兴趣的朋友跟随小编一起看看吧... 目录linux grep 命令全面使用指南一、基础搜索语法1. 基本文本搜索2. 多文件搜索二、常用选项详解1. 输出控制选项2. 上下文控制选项三、正则表达