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

千锋教育嵌入式物联网教程之系统编程篇学习-03

目录

进程的终止

exit函数

_exit函数 

 进程退出清理

进程间的替换

进程间通信

常见通信机制

进程间通信的实质

 信号

产生信号的方式

 信号的默认处理方式

进程对信号的处理方式 

kill函数 

进程的终止

使用exit函数对进程进行终止,而return只是结束函数,如果想让return结束进程的话,那么把它放在主函数当中即可。一般都是使用exit(以我的知识面)

exit函数

_exit函数 

 

 

 

 

 进程退出清理

其实就是当进程要退出时,最后执行的一个函数

我也不知道有什么用,为什么不直接取一个函数,并且把这个函数的位置放在最后面不就行了,不理解这个函数应该在什么场景使用

进程间的替换

实质就是:不使用fork的基础上,实现另外一个进程(剧本)。

常见的操作:在一个进程中我想知道当前的文件路径,那么你就可以直接使用shell命令pwd即可实现了,因此exec可以帮我们实现linux中的命令。或者你想执行另外一个C程序./hello例如

虽然有6个函数,但是我觉得使用一个函数即可execvp即可,把命令使用数组保存更好看,而且可以使用相对路径,不需要使用绝对路径

 

 理解Path其实就是一个可执行文件,其实在linux终端输入ls,它就是一个可执行文件

 不带P的只能使用绝对路径,而带P的可以使用绝对和相对路径,因此execlp可以直接取代execl数更方便

 

 exec是替换,而fork是继承赋值

 

进程间通信

进程间的相互通信,使用某些固定的函数进行编程

进程间通信功能:数据传输、资源共享、通知事件、 进程控制

常见通信机制

 这些通信方式,你在裸机开发中也会使用到部分内容,其次在学freertos的时候,也使用到了内容:如事件标志组、二值信号量、消息队列、任务通知都有这些身影

不同主机通信--socket套接字

进程间通信的实质

 重点:绝大多数进程间的通信方式是基于内核空间的操作

 信号

 异步就是:进程不需要等待信号的到达,进程也不知道信号啥时候到达,相当于单片机的中断层次,突然就来了--然后处理某一个突发事件。所以理解:信号是软件中断--对硬件中断的模拟

后面的知识可以知道,信号比中断更完善,因为单片机的中断来了就需要执行,但是信号来了不一定需要执行,可以不执行(忽略信号),但是在硬件中貌似中断是不能忽略的,必须去执行中断。

因此这个软件中断,起提醒作用,提醒你来了信号,但是至于你执不执行看你自己需求,不强求执行

 我们只会使用前31个信号,并且只使用几个常用信号而已

 

 信号的名字都已经定义好了,因此我们是使用已有的信号进行编程

 

 这个操作我们经常使用,也需要记住,因为有时候我们写程序的时候是死循环,那么我们可以直接使用该命令,可以强制退出我们的死循环程序

产生信号的方式

 区分kill函数和kill命令,kill不是杀死的意思,它的作用是发送信号

 信号的默认处理方式

 

进程对信号的处理方式 

 信号默认处理方式与进程对信号的处理方式区分并且理解一下,一个是信号本身具备的默认能力,而另外一个是进程对信号的处理方式。就像砖头(信号)的默认功能是建房子,而人(进程)把砖头(信号)当打人工具(执行自定义信号处理)。但是有些信号是只能当默认的,比如钱的处理方式是花,你不能烧(自己理解一下)

 

kill函数 

进程组的所有进程可以理解为在主进程中我们fork了很多子进程,而这些子进程与主进程都在一个进程组中

PID:进程的唯一标识
PGID:进程组ID

 千万pid不要等于-1--不然系统所有进程都被搞了--后果很大--但是不知道会出现啥情况

 至于信号的选择,我们的作用是退出进程,因此在信号表中选择一个功能为退出进程的功能即可

自己也可以向自己发信号--或者是等待到了某种事情,该进程就自动退出

我们也可以在终端对某一个进程进行发信号:kill 信号选项 进程号----功能为数字,为2的时候表示停止进程,而进程号的获取,我们可以使用ps ajx获取所有进程号

kill 2 3103/kill -2 3103    2表示SIGINT信号 

 

相关文章:

千锋教育嵌入式物联网教程之系统编程篇学习-03

目录 进程的终止 exit函数 _exit函数 进程退出清理 进程间的替换 进程间通信 常见通信机制 进程间通信的实质 信号 产生信号的方式 信号的默认处理方式 进程对信号的处理方式 kill函数 进程的终止 使用exit函数对进程进行终止,而return只是结束函数&a…...

升级到https

现在很多站长都会考虑将自己的站点从http升级到https,不仅是基于安全的考虑,有的也是因为第三方平台的限制,如谷歌浏览器会将http站点标记为不安全的站点,微信平台要求接入的微信小程序必须使用https等。 那如何将一个http站点升…...

【C语言】数据结构-二叉树

主页:114514的代码大冒险 qq:2188956112(欢迎小伙伴呀hi✿(。◕ᴗ◕。)✿ ) Gitee:庄嘉豪 (zhuang-jiahaoxxx) - Gitee.com 引入 我们之前已经学过线性数据结构,今天我们将介绍非线性数据结构----树 树是一种非线性的…...

c++中std::condition_variable最全用法归纳

前言 建议阅读以下文章前需先对建立 std::thread 多线程与std::mutex 锁有一定程度的熟悉 std::thread最全用法归纳 std::mutex最全用法归纳 概括 使用 std::condition_variable 的 wait 会把目前的线程 thread 停下来并且等候事件通知,而在另一个线程中可以使用…...

Python数据可视化:数据关系图表可视化

目录 1、散点图 1.1、趋势显示的二维散点图 1.2、分布显示的二维散点图 1.3、散点曲线图...

Urho3D约定

Urho3D使用以下约定和原则: 左手坐标系。正X、Y和Z轴指向右侧、上方和前方,正旋转为顺时针。度用于角度。顺时针顶点定义正面。音频音量指定为0.0(静音)到1.0(全音量)路径名使用斜杠而不是反斜杠。调用操作…...

python数据结构-列表,元组

列表 列表是Python中最通用的数据类型,可以写成方括号之间的逗号分隔值(项目)列表。 使用列表的重要事项是,列表中的项目不必是相同的类型。也就是说一个列表中的项目(元素)可以是数字,字符串,数组,字典等甚至是列表类…...

Properties类读配置文件、修改配置文件

Properties类简介(1)Properties类是专门用于读写配置文件的集合类(2)配置文件的后缀名为.properties,内容格式为:# 可以用“#”作为注释 键值 键值**注意:**键值对不需要有空格,值不需要用引号一起来。默认类型是String。键、值不可以是null(3)Properties类的方法可查找api文档…...

图解LeetCode——剑指 Offer 24. 反转链表

一、题目 定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转该链表并输出反转后链表的头节点。 二、示例 示例: 【输入】 1->2->3->4->5->NULL 【输出】 5->4->3->2->1->NULL 限制&#xff1a; 0 < 节点个数 < 5000 三、…...

【C语言】“指针的运算”、“指针与数组”

文章目录一、指针运算1.指针 - 整数2.指针-指针3.指针关系运算二、指针与数组三、二级指针四、指针数组完结一、指针运算 指针可以进行整数&#xff0c;指针-指针&#xff0c;还有关系运算&#xff0c;其他的运算会被编译器阻止。 1.指针 - 整数 对指针进行的时候一定要注意不…...

Linux高级命令之查找文件命令

查找文件命令学习目标能够说出查找文件使用的命令1. find命令及选项的使用命令说明find在指定目录下查找文件(包括目录)find命令选项:选项说明-name根据文件名(包括目录名)字查找find命令及选项的效果图:2. find命令结合通配符的使用通配符:是一种特殊语句&#xff0c;主要有星…...

PyCharm+Docker:打造最舒适的深度学习炼丹炉

九、PyCharmDocker&#xff1a;打造最舒适的深度学习炼丹炉 安装docker&#xff1a; 如何在 Ubuntu 22.04 LTS 中安装 Docker 和 Docker Compose https://zhuanlan.zhihu.com/p/547169542 修改Linux硬盘卷标&#xff1a; ntfs文件系统&#xff1a;https://blog.csdn.net/n…...

【mock】手把手带你用mock写自定义接口+mock常用语法

mock自定义接口完整流程 官网语法规范:https://github.com/nuysoft/Mock/wiki/Syntax-Specification 首先: 要有一个项目,我这里是vue3项目,以下从vue3项目搭建开始,已搭建好的请直接看2 1.空目录下新建vue3项目 运行创建项目命令&#xff1a; 在bash中:(文件路径处输入cm…...

2023 年腾讯云服务器CVM快速配置购买教程,新手上云必备!

腾讯云服务器快速配置购买教程是新手必备的上云教程。主机教程网在本文中以腾讯云服务器为例&#xff0c;给大家带来一个完整的、手把手教学的服务器购买流程。助力快速完成服务器的购买、配置、以及网站的搭建&#xff0c;给新手节省宝贵的时间&#xff0c;避免采坑&#xff0…...

opencv显示图像

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…...

C++:类和对象(中)

文章目录1 类的6个默认成员函数2 构造函数2.1 概念2.2 特性3 析构函数3.1 概念3.2 特性4 拷贝构造函数4.1 概念4.2 特性5 赋值运算符重载5.1 运算符重载5.2 赋值运算符重载5.3 前置重载和后置重载6 日期类的实现7 const成员8 取地址及const取地址操作符重载1 类的6个默认成员函…...

53. 最大子数组和

文章目录题目描述暴力法动态规划法分治法参考文献题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 示例 1&#xff1a; 输入&…...

基于Java+SpringBoot+SpringCloud+Vue前后端分离医院管理系统设计与实现

博主介绍&#xff1a;✌全网粉丝3W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建、毕业项目实战、项目定制✌ 博主作品&#xff1a;《微服务实战》专栏是本人的实战经验总结&#xff0c;《S…...

QT基础入门【环境配置篇】linux桌面QT开发环境的构建以及问题解决

目录 一、下载QT的安装包 二、安装 1.执行以下命令开始安装 2.选择配置 三、启动...

Linux系统之部署企业内部静态导航页

Linux系统之部署企业内部静态导航页 一、本次实践目的二、检查本地系统环境1.检查系统版本2.检查内核版本三、下载静态导航页资源包1.创建下载目录2.下载资源包四、安装apache服务1.安装httpd2.复制网页文件3.重启httpd服务4.检查httpd服务状态五、访问导航页六、修改导航页网站…...

2023备战金三银四,Python自动化软件测试面试宝典合集(四)

接上篇&#xff1a;11、点击塞钱进红包&#xff0c;选择使用新卡付款&#xff0c;按照流程添加新卡&#xff0c;此时同样需要考虑金额>新卡余额&#xff0c;金额<新卡余额&#xff0c;金额新卡余额三种情况12、使用指纹确认付款(正确的/不正确的指纹)13、使用密码确认付款…...

算法训练营 day43 动态规划 不同路径 不同路径 II

算法训练营 day43 动态规划 不同路径 不同路径 II 不同路径 62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达…...

关联查询的SQL有几种情况

1、内连接&#xff1a;inner join … on 结果&#xff1a;A表 ∩ B表 2、左连接&#xff1a;A left join B on &#xff08;2&#xff09;A表全部 &#xff08;3&#xff09;A表- A∩B 3、右连接&#xff1a;A right join B on &#xff08;4&#xff09;B表全部 &#…...

查缺补漏三:事务隔离级别

什么是事务&#xff1f; 事务就是一组操作的集合&#xff0c;事务将整组操作作为一个整体&#xff0c;共同提交或者共同撤销 这些操作只能同时成功或者同时失败&#xff0c;成功即可提交事务&#xff0c;失败就执行事务回滚 MySQL的事务默认是自动提交的&#xff0c;一条语句执…...

没有她的通讯录(C语言实现)

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;夏目的C语言宝藏 &#x1f4ac;总结&#xff1a;希望你看完之…...

Spring Security 从入门到精通

前言 Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro&#xff0c;它提供了更丰富的功能&#xff0c;社区资源也比Shiro丰富。 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多&#xff0c;因为相比与Spr…...

微信小程序Springboot vue停车场车位管理系统

系统分为用户和管理员两个角色 用户的主要功能有&#xff1a; 1.用户注册和登陆系统 2.用户查看系统的公告信息 3.用户查看车位信息&#xff0c;在线预约车位 4.用户交流论坛&#xff0c;发布交流信息&#xff0c;在线评论 5.用户查看地图信息&#xff0c;在线导航 6.用户查看个…...

看完这篇 教你玩转渗透测试靶机vulnhub——Hack Me Please: 1

Vulnhub靶机Hack Me Please: 1渗透测试详解Vulnhub靶机介绍&#xff1a;Vulnhub靶机下载&#xff1a;Vulnhub靶机安装&#xff1a;Vulnhub靶机漏洞详解&#xff1a;①&#xff1a;信息收集&#xff1a;②&#xff1a;漏洞利用③&#xff1a;获取反弹shell&#xff1a;④&#x…...

nodejs+vue地铁站自动售票系统-火车票售票系统vscode

地铁站自动售票系统主要包括个人中心、地铁线路管理、站点管理、购票信息管理、乘坐管理、用户信息管理等多个模块。它使用的是前端技术&#xff1a;nodejsvueelementui 前后端通讯一般都是采取标准的JSON格式来交互。前端技术&#xff1a;nodejsvueelementui,视图层其实质就是…...

Spring Security in Action 第十二章 OAuth 2是如何工作的?

本专栏将从基础开始&#xff0c;循序渐进&#xff0c;以实战为线索&#xff0c;逐步深入SpringSecurity相关知识相关知识&#xff0c;打造完整的SpringSecurity学习步骤&#xff0c;提升工程化编码能力和思维能力&#xff0c;写出高质量代码。希望大家都能够从中有所收获&#…...

网站推广明细报价表/搜索引擎平台

作为一名全职的Go语言作家和老师&#xff0c;我花了很多时间和学生们一起&#xff0c;帮助他们写出更清晰、更好、更有用的Go程序。我发现&#xff0c;我给他们的建议可以归纳总结为一套通用原则&#xff0c;在这里我将这些原则分享给大家。1、你应该是无聊的Go社区喜欢共识&am…...

运动服饰网站建设目的/2022年小学生新闻摘抄十条

text-align 属性规定元素中的文本的水平对齐方式。该属性通过指定行框与哪个点对齐&#xff0c;从而设置块级元素内文本的水平对齐方式。通过允许用户代理调整行内容中字母和字之间的间隔&#xff0c;可以支持值 justify&#xff1b;不同用户代理可能会得到不同的结果。 <!…...

汽车城网站建设方案/下载百度 安装

转载于:https://blog.51cto.com/1101837/2087926...

iis怎么让添加的网站没有端口/chatgpt网站

前言 Nuget是ASP .NET Gallery的一员&#xff0c;是免费、开源的包管理工具&#xff0c;专注于在.Net / .Net Core应用开发过程中第三方组件库的管理&#xff0c;相对于传统单纯的dll引用要方便、科学得多。其中nuget.org是最著名的Nuget公开库&#xff0c;但是企业内部开发的&…...

山东企业网站建设公司/优化大师破解版app

我正在使用Argparse将shell输入解析为我的Python函数.棘手的部分是,此脚本首先读取一个文件,该文件部分确定Argparse可用的参数类型(这是一个JSON文件,其中包含用户可以指定要输出哪些数据的条件).但是在将这些参数添加到解析器之前,我想阅读一些与文件读取本身有关的参数. (例…...

网站模板带手机站/网络推广网站

前言 基于哨兵机制&#xff0c;实现高可用&#xff0c;也就是集群架构。 主数据节点挂了 依次执行以下步骤 哨兵节点监控数据节点 1.所有从数据节点监控挂了&#xff0c;然后&#xff0c;中止复制主数据节点 2.所有哨兵节点监控挂了&#xff0c;然后&#xff0c;判断是否超过下…...