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

守护者进程小练习

守护者进程含义

定义:守护进程(Daemon)是运行在后台的特殊进程,独立于控制终端,周期性执行任务或等待事件触发。它通常以 root 权限运行,名称常以 d 结尾(如 sshd, crond)。
特性:
后台运行:脱离终端,关闭终端不影响其运行。
无交互性:不依赖用户输入,输出通常通过日志记录。
长期存活:系统启动时开始运行,随系统关闭停止。
父进程为 init:原父进程退出后,由 init 进程接管。

在Ubuntu上创建一个守护者进程

nohup命令方式

#!/bin/bash
while true; doecho "守护进程运行中..." >> /tmp/nohup.logsleep 5
done

请添加图片描述

fork函数

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <syslog.h>
#include <sys/stat.h>int main() {pid_t pid;// 第一次 fork,父进程退出pid = fork();if (pid < 0) exit(1);if (pid > 0) exit(0); // 父进程退出// 创建新会话if (setsid() == -1) {exit(1); // 处理 setsid 失败}// 第二次 fork,避免成为会话组长pid = fork();if (pid < 0) exit(1);if (pid > 0) exit(0);// 初始化 syslog(关键步骤!)openlog("fork_test", LOG_PID | LOG_PERROR, LOG_DAEMON);// 改变目录if (chdir("/") == -1) {syslog(LOG_ERR, "chdir failed");exit(1);}umask(0);// 关闭文件描述符for (int i = 0; i < 3; i++) close(i);// 主逻辑while (1) {syslog(LOG_INFO, "守护进程运行中..."); // 使用 LOG_INFOsleep(5);}return 0;
}

请添加图片描述

daemon函数

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <syslog.h>
#include <errno.h>int main() {// 使用 daemon(0, 0) 自动完成守护进程创建if (daemon(0, 0) == -1) {perror("daemon");exit(1);}while (1) {syslog(LOG_INFO, "守护进程运行中...");sleep(5);}return 0;
}

请添加图片描述

GDB调试

GDB调试原理:
核心机制:通过 ptrace 系统调用控制目标进程,实现暂停、单步执行、查看内存等。
关键功能:
断点设置:在代码中插入 int 3 指令,触发中断暂停。
内存访问:读写目标进程的内存,查看变量值。
反向调试:记录执行历史,支持回溯。

测试程序

#include <stdio.h>
#include <unistd.h>int main() {int a = 10;int b = 20;int c = a + b;printf("a + b = %d\n", c);sleep(5);return 0;
}

调试命令实例

(gdb) break main          # 在 main 函数设置断点
(gdb) run                 # 运行程序
(gdb) print a             # 查看变量 a 的值
(gdb) step                # 单步执行
(gdb) bt                  # 查看调用栈
(gdb) quit                # 退出 GDB

请添加图片描述

用笔记本电脑,通过访问阿里云服务器的端口(穿透)登录到树莓派系统

在这里插入图片描述

相关文章:

守护者进程小练习

守护者进程含义 定义&#xff1a;守护进程&#xff08;Daemon&#xff09;是运行在后台的特殊进程&#xff0c;独立于控制终端&#xff0c;周期性执行任务或等待事件触发。它通常以 root 权限运行&#xff0c;名称常以 d 结尾&#xff08;如 sshd, crond&#xff09;。 特性&a…...

opencv函数展示3

一、图像平滑&#xff08;模糊&#xff09; 线性滤波&#xff08;速度快&#xff09;&#xff1a; 1.cv2.blur() 2.cv2.boxFilter() 3.cv2.GaussianBlur() 非线性滤波&#xff08;速度慢但效果好&#xff09;&#xff1a; 4.cv2.medianBlur() 5.cv2.bilateralFilter() 二、锐…...

环境搭建与入门:Flutter SDK安装与配置

环境搭建与入门&#xff1a;Flutter SDK安装与配置 一、Flutter开发环境概述 1.1 Flutter开发环境组成 Flutter开发环境主要包含以下几个关键组件&#xff1a; Flutter SDK&#xff1a;Flutter的核心开发工具包Dart SDK&#xff1a;Flutter使用的编程语言环境IDE/编辑器&am…...

linux驱动之poll

驱动中 poll 实现 在用户空间实现事件操作的一个主要实现是调用 select/poll/epoll 函数。那么在驱动中怎么来实现 poll 的底层呢&#xff1f; 其实在内核的 struct file_operations 结构体中有一个 poll 成员&#xff0c;其就是底层实现的接口函数。 驱动中 poll 函数实现原…...

遥感技术赋能电力设施监控:应用案例篇

目前主流的电力巡检手段利用无人机能够通过设定灵活航线进行低空飞行、搭载不同的采集设备&#xff0c;能够从不同角度对输电线进行贴近拍摄&#xff0c;但缺陷是偏远山区无人机飞行技术要求高&#xff0c;成本高&#xff0c;且飞行的无人机也可能会对输电线产生破坏。 星图云开…...

SpringAI+DeepSeek大模型应用开发——5 ChatPDF

ChatPDF 知识库 RAG检索增强 由于训练大模型非常耗时&#xff0c;再加上训练语料本身比较滞后&#xff0c;所以大模型存在知识限制问题&#xff1a; 知识数据比较落后&#xff0c;往往是几个月之前的&#xff1b;不包含太过专业领域或者企业私有的数据&#xff1b; 为了解决…...

yolov8 框架自带模型体验功能

简介 YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本&#xff0c;目前支持图像分类、物体检测和实例分割任务。 YOLOv8 是一个 SOTA 模型&#xff0c;它建立在以前 YOLO 版本的成功基础上&#xff0c;并引入了新的功能和改进&#xff0c…...

柴油机气缸体顶底面粗铣组合机床总体及夹具设计

一、引言 柴油机气缸体是柴油机的关键部件&#xff0c;其顶底面的加工精度直接影响气缸体的装配质量和柴油机的性能。粗铣是气缸体顶底面加工的重要工序&#xff0c;设计一款高效、精确的粗铣组合机床及配套夹具&#xff0c;对于提高气缸体加工效率和质量具有重要意义。 二、…...

SpringBoot - Minio

1、简介 MinIO 是一个开源的对象存储服务器&#xff0c;用于存储和管理大规模的非结构化数据&#xff0c;例如图像、视频、日志文件、备份和容器镜像。MinIO 旨在提供高性能、高可用性、可扩展性和易用性的对象存储解决方案&#xff0c;适用于私有云、公共云和混合云环境。2、…...

Android --- SystemUI启动流程

1.main 函数入口&#xff0c;调用SystemServer().run()方法 代码路径:frameworks/base/services/java/com/android/server/SystemServer.java 2.run 方法中有3种服务的启动&#xff0c;我们主要看StartOtherService 代码路径:frameworks/base/services/java/com/android/se…...

docker镜像被覆盖了怎么办?通过sha256重新上传镜像

如果一个镜像通过相同的标签被重新推送&#xff08;覆盖&#xff09;&#xff0c;那么旧的镜像内容虽然在 Docker 的存储中可能仍然存在&#xff0c;但通过原来的标签将无法直接访问到它。Docker 和 Harbor 默认情况下不会自动删除旧的镜像层&#xff0c;除非进行了垃圾回收&am…...

(二十六)Java观察者模式在Android开发中的应用详解

Java观察者模式在Android开发中的应用 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;使得多个观察者对象可以同时监听一个主题对象。当主题对象的状态发生变化时&#xff0c;所有注册的观察者…...

【SpringMVC】深入解析自定义拦截器、注册配置拦截器、拦截路径方法及常见拦截路径、排除拦截路径、拦截器的执行流程

拦截器 上个章节我们完成了强制登录的功能, 后端程序根据Session来判断用户是否登录, 但是实现方法是比较麻烦的&#xff1a; 需要修改每个接口的处理逻辑需要修改每个接口的返回结果接口定义修改, 前端代码也需要跟着修改 有没有更简单的办法, 统一拦截所有的请求, 并进行Se…...

基于VS Code 为核心平台的python语言智能体开发平台搭建

以下是基于 VS Code 为核心平台&#xff0c;整合 Node-RED、Gradio、Docker Desktop 的智能体可视化开发平台优化方案&#xff0c;聚焦工具链深度集成与开发效率提升&#xff1a; 一、核心架构设计 #mermaid-svg-f8l9kYPAlJ2TlpGF {font-family:"trebuchet ms",verd…...

使用最新threejs复刻经典贪吃蛇游戏的3D版,附完整源码

基类Entity 建立基类Entity&#xff0c;实现投影能力、动画入场效果&#xff08;从小变大的弹性动画&#xff09;、计算自己在地图格位置的方法。 // 导入gsap动画库&#xff08;用于创建补间动画&#xff09; import gsap from gsap// 定义Entity基类 export default class …...

论坛测试报告

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…...

IPMI 与 Redfish API简介

--- ### **IPMI 与 Redfish API 详解** #### **1. IPMI(智能平台管理接口)** **简介** IPMI(Intelligent Platform Management Interface)是一种硬件级别的带外管理标准,允许管理员通过独立于操作系统的网络通道(BMC)监控和管理服务器硬件,即使主机已关机或操作系…...

zset.

zset 有序集合 zset 保留了 set 不能有重复元素的特点 zset 中的每个元素都有一个唯一的浮点类型的分数&#xff08;score&#xff09;与之关联&#xff0c;使得 zset 内部的元素是可以维护有序性的。但是这个有序不是用下标作为排序依据的&#xff0c;而是根据分数&#xf…...

Windows 部署 DeepSeek 详细教程

一、准备工作 系统要求&#xff1a; 建议Windows 10 22H2 或更高版本&#xff0c;家庭版或专业版上网环境&#xff1a; 建议科学上网&#xff0c;国内访问部分网站会很慢设备要求&#xff1a; 内存8G以上、关闭防火墙 二、安装Ollama 官网链接: https://ollama.com/downloadg…...

过去十年前端框架演变与技术驱动因素剖析

一、技术演进脉络&#xff08;2013-2023&#xff09; 2013-2015&#xff1a;结构化需求催生框架雏形 早期的jQuery虽然解决了跨浏览器兼容性问题&#xff08;如IE8兼容性处理&#xff09;&#xff0c;但其松散的代码组织方式难以支撑复杂应用开发。Backbone.js的出现首次引入M…...

从零开始学A2A一:A2A 协议的高级应用与优化

A2A 协议的高级应用与优化 学习目标 掌握 A2A 高级功能 理解多用户支持机制掌握长期任务管理方法学习服务性能优化技巧 理解与 MCP 的差异 分析多智能体场景下的优势掌握不同场景的选择策略 第一部分&#xff1a;多用户支持机制 1. 用户隔离架构 #mermaid-svg-Awx5UVYtqOF…...

#Linux动态大小裁剪以及包大小变大排查思路

1 动态库裁剪 库分为动态库和静态库&#xff0c;动态库是在程序运行时才加载&#xff0c;静态库是在编译时就加载到程序中。动态库的大小通常比静态库小&#xff0c;因为动态库只包含了程序需要的函数和数据&#xff0c;而静态库则包含了所有的函数和数据。静态库可以理解为引入…...

基于微信小程序的中医小妙招系统的设计与实现

hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生…...

sqlite3的API以及命令行

sqlite是目前最流行的嵌入式数据库。 所谓嵌入式&#xff0c;就是足够简单&#xff0c;可以嵌入到我们自己开发的应用程序之中。 在Linux系统中&#xff0c;sqlite的使用只需要使用它的API&#xff0c;连接它的动态连接库&#xff0c;甚至都不用连接&#xff0c;sqlite的实现…...

css button 点击效果

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>button点击效果</title><style>#container {display: flex;align-items: center;justify-content: center;}.pushable {position: relat…...

表征流体作用力的参数及其特性

在圆柱绕流研究中&#xff0c;这些参数分别表征流体作用力的关键特性&#xff0c;以下是详细解析&#xff1a; &#x1f4ca; 参数物理意义及工程应用 符号名称物理意义典型值范围&#xff08;参考&#xff09;工程意义 C d m a x C_{dmax} Cdmax​最大阻力系数瞬时阻力系数&a…...

Foundation Agent:深度赋能AI4DATA

2025年5月17日&#xff0c;第76期DataFunSummit&#xff1a;AI Agent技术与应用峰会将在DataFun线上社区举办。Manus的爆火并非偶然&#xff0c;随着基础模型效果不断的提升&#xff0c;Agent作为大模型的超级应用备受全世界的关注。为了推动其技术和应用&#xff0c;本次峰会计…...

Docker--Docker镜像原理

docker 是操作系统层的虚拟化&#xff0c;所以 docker 镜像的本质是在模拟操作系统。 联合文件系统&#xff08;UnionFS&#xff09; 联合文件系统&#xff08;UnionFS&#xff09; 是Docker镜像实现分层存储的核心技术&#xff0c;它通过将多个只读层&#xff08;Image Laye…...

SpringAI+DeepSeek大模型应用开发——2 大模型应用开发架构

目录 2.大模型开发 2.1 模型部署 2.1.1 云服务-开放大模型API 2.1.2 本地部署 搜索模型 运行大模型 2.2 调用大模型 接口说明 提示词角色 ​编辑 会话记忆问题 2.3 大模型应用开发架构 2.3.1 技术架构 纯Prompt模式 FunctionCalling RAG检索增强 Fine-tuning …...

Transformer 架构 - 编码器 (Transformer Architecture - Encoder)

1.Transformer 编码器整体结构 Transformer 编码器的结构相对直观:它由 N 个完全相同的编码器层 (Encoder Layer) 堆叠而成。 图1: Transformer 编码器整体结构示意图 (简化) 输入序列(例如,通过 embedding 层转换后的词向量)首先会加上位置编码,然后传入第一个编码器层…...