上位机图像处理和嵌入式模块部署(树莓派4b和进程监控)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

  

        虽然软件开发的时候,我们总是希望软件不要发生bug、不要有闪退、甚至于说不要有内存泄漏,但这也只是我们自己的一厢情愿而已。只要前方有需求,软件功能在不停地迭代和优化,那么就势必会引入新的bug,这是不可避免的。因此,以防万一,我们一般会在软件开发的时候编写一个关联的监控进程,防止发生程序闪退的现象。

1、编写测试代码hello.c

        首先我们编写一个测试代码hello.c,内容如下所示

#include <stdio.h>
#include <unistd.h>int main()
{while(1){printf("hello, world\n");sleep(1);}return 0;
}

2、编译测试代码

        有了代码之后,我们简单用gcc工具编译一下,

gcc hello.c -g -o hello

3、准备监控进程run.py

        脚本的内容比较简单,首先它启动hello程序。等到启动之后,它就会定时检查一下程序还在不在,如果在,一切ok。如果不在的话,那么就需要重启一下进程。

import subprocess
import timedef start_program():process = subprocess.Popen(["/home/feixiaoxing/Desktop/monitor/hello"])return processdef monitor_program(process):while True:if process.poll() is not None:print("Program exited, restarting...")process = start_program()time.sleep(1)if __name__ == "__main__":program_process = start_program()monitor_program(program_process)

4、测试和验证

        有了可执行程序hello,有了监控程序run.py,接下来就可以开始测试了。测试过程中,原本闪退的部分,我们可以通过ps aux | grep hello找到pid之后、并且kill的方法来模拟闪退。观察闪退之后hello程序的打印是不是还正常。如果正常,代表我们的设计是有效果的;反之,则代表还需要check一下失败的原因是什么,回头重新改进一下。

feixiaoxing@raspberrypi:~/Desktop/monitor $ python3 run.py
hello, world
hello, world
hello, world
hello, world
hello, world
hello, world
hello, world
hello, world
hello, world
hello, world
hello, world
hello, world
hello, world
hello, world
Program exited, restarting...
hello, world
hello, world
hello, world
hello, world
hello, world

        通过打印,我们发现run.py启动之后,是一直有打印的。这个时候,我们通过另外一路ssh登录到树莓派上,找到hello并且kill -9 hello之后,这个时候run.py也发现hello不见了,所以重新启动了程序。这就是整个监控的基本原理。最后给出kill hello的方法,

feixiaoxing@raspberrypi:~/Desktop $ ps aux | grep hello
feixiao+    2197  0.0  0.0   2192  1024 pts/0    S+   23:32   0:00 /home/feixiaoxing/Desktop/monitor/hello
feixiao+    2199  0.0  0.0   6088  1920 pts/1    S+   23:32   0:00 grep --color=auto hello

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

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

相关文章

Android解放双手的利器之ViewBinding

文章目录 1. 背景2. ViewBinding是什么3. 开启ViewBinding功能4. 生成绑定类5. 使用ViewBinding5.1Activity 中使用5.2 Fragment 中使用5.3 ViewHolder 中使用 6. ViewBinding的优点7. 与 dataBinding 对比 1. 背景 写代码最繁琐的是什么&#xff1f;重复的机械操作。我们刚接…

JAVA 项目<果园之窗>_完结

目录 1、前言&#xff1a;2、视频展示&#xff1a;3、环境配置&#xff1a;4、工程代码&#xff1a;5、原理&#xff1a;6、原理补充&#xff1a;7、综上&#xff1a; 1、前言&#xff1a; 因为没有足够的时间这个项目用的是别人搭好的框架&#xff0c;在此基础上做调整并根据前…

【机器学习】线性回归:以房价预测为例

线性回归&#xff1a;揭秘房价预测的黑科技 一、引言二、线性回归概述三、房价预测实例数据收集与预处理特征选择与建模模型评估与优化 四、总结与展望 一、引言 在数字化时代&#xff0c;数据科学已成为推动社会进步的重要引擎。其中&#xff0c;线性回归作为数据科学中的基础…

【研发日记】Matlab/Simulink避坑指南(十二)——Initialize Function执行Bug

文章目录 前言 背景介绍 问题描述 分析排查 解决方案 总结归纳 前言 见《研发日记&#xff0c;Matlab/Simulink避坑指南(七)——数据溢出钳位Bug》 见《研发日记&#xff0c;Matlab/Simulink避坑指南(八)——else if分支结构Bug》 见《研发日记&#xff0c;Matlab/Simuli…

【敦煌网注册/登录安全分析报告】

敦煌网注册/登录安全分析报告 前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大…

H5 鼠标点击粒子扩散效果

&#x1f9d0;别人的博客中有这样的效果&#xff0c;于是自己就尝试实现了一下。 效果如图 源码如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&quo…

vue3+ant design实现表格数据导出Excel

提示:实现表格数据导出Excel 文章目录 前言 一、安装ant design? 二、引用ant design 1.搭建框架 2.获取表格数据 三、封装导出表格的代码 四、导出 1.获取导出地址 2.在下载导出事件中添加导出代码 五、全部代码 前言 今天终于有时间来更新文章了,最近公司项目比较紧…

如何打开远程桌面连接?

远程桌面连接是一项强大的功能&#xff0c;它允许我们远程访问其他计算机&#xff0c;并在远程计算机上进行操作。这对于远程办公、技术支持和远程培训等场景非常有用。本文将介绍如何在不同操作系统中打开远程桌面连接。 Windows系统 在Windows操作系统中&#xff0c;打开远程…

第二证券今日投资参考:银保渠道合作限制松绑 低空旅游借势起飞

昨日&#xff0c;两市股指盘中震动上扬&#xff0c;沪指一度涨近1%续创年内新高&#xff0c;创业板指一度涨超2%。到收盘&#xff0c;沪指涨0.83%报3154.32点&#xff0c;深证成指涨1.55%报9788.07点&#xff0c;创业板指涨1.87%报1900.01点&#xff0c;科创50指数涨2.26%&…

一键局域网共享工具

一键局域网共享工具&#xff1a;实现文件快速共享的新选择 在数字化时代&#xff0c;文件共享已成为我们日常工作和生活中的重要需求。无论是在家庭还是在办公环境中&#xff0c;我们经常需要在不同的设备之间传输文件。为了满足这一需求&#xff0c;一键局域网共享工具应运而…

彩虹聚合DNS管理系统

聚合DNS管理系统可以实现在一个网站内管理多个平台的域名解析&#xff0c;目前已支持的域名平台有&#xff1a;阿里云、腾讯云、华为云、西部数码、CloudFlare。本系统支持多用户&#xff0c;每个用户可分配不同的域名解析权限&#xff1b;支持API接口&#xff0c;支持获取域名…

LeetCode96:不同的二叉搜索树

题目描述 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 代码 /*dp[i]&#xff1a;表示i个节点有dp[i]个不同的二搜索叉树递推公式&#xff1a;dp[i] dp[j-1] * dp[i-j], j…

Mongodb中的索引

目录 索引的类型 单字段索引 符合索引 其他索引 索引的管理操作 查看索引 创建索引 移除索引 索引的使用 执行计划 覆盖的索引查询 索引支持在MongoDB中高效地执行查询。 如果没有索引&#xff0c;MongoDB必须执行全集合扫描&#xff0c;即扫描集合中的每个文档&a…

2024 年最新使用 ntwork 框架搭建企业微信机器人详细教程

NTWORK 概述 基于 PC 企业微信的 api 接口&#xff0c;支持收发文本、群、名片、图片、文件、视频、链接卡片等。 下载安装 ntwork pip install ntwork国内源安装 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ntwork企业微信版本下载 官方下载&#xff1a;h…

H5 css动画效果

你可以使用 CSS 动画来实现这个效果。下面是一个简单的示例代码&#xff0c;展示了如何使用 CSS 中的关键帧动画来放大然后缩小一张图片&#xff0c;并使动画循环播放&#xff1a; html <!DOCTYPE html> <html lang"en"><head><meta charset&qu…

机器学习-Padans

机器学习-Padans 面对人生的烦恼与挫折&#xff0c;最重要的是摆正自己的心态&#xff0c;积极面对一切。再苦再累&#xff0c;也要保持微笑。笑一笑&#xff0c;你的人生会更美好&#xff01; 目录 机器学习-Padans 1.DataFrame 2.画图 3. 扩展&#xff1a; 1.DataFrame #…

Spring MVC分页示例

Spring MVC分页示例 分页用于在不同部分显示大量记录。在这种情况下&#xff0c;我们将在一页中显示10、20或50条记录。对于其余记录&#xff0c;我们提供链接。 我们可以在Spring MVC中简单地创建分页示例。在此分页示例中&#xff0c;我们使用MySQL数据库来获取记录。 创建…

Web实时通信的学习之旅:轮询、WebSocket、SSE的区别以及优缺点

文章目录 一、通信机制1、轮询1.1、短轮询1.2、长轮询 2、Websocket3、Server-Sent Events 二、区别1、连接方式2、协议3、兼容性4、安全性5、优缺点5.1、WebSocket 的优点&#xff1a;5.2、WebSocket 的缺点&#xff1a;5.3、SSE 的优点&#xff1a;5.4、SSE 的缺点&#xff1…

AI图书推荐:ChatGPT全面指南—用AI帮你更健康、更富有、更智慧

你是否在努力改善你的健康&#xff1f; 你是否长期遭受财务困难&#xff1f; 你想丰富你的思想、身体和灵魂吗&#xff1f; 如果是这样&#xff0c;那么这本书就是为你准备的。 《ChatGPT全面指南—用AI帮你更健康、更富有、更智慧》&#xff08;CHATGPT Chronicles AQuick…

【ArcGISProSDK】condition属性

示例 通过caption属性可以看出esri_mapping_openProjectCondition的条件是一个工程被打开 condition的作用 由此可知示例中的Tab实在工程被打开才能使用&#xff0c;否则他禁用显示灰色&#xff0c;在未禁用的时候说明条件满足。 参考文档 insertCondition 元素 (arcgis.com…