Linux下的UDEV机制/守护进程

一. Udev机制概念引入 

   e4de1e6ba3d14e0da7da1aea681a5e5c.jpeg

    ( 需要在  etc/udev/rules.d/  下创建设备的相关规则,不然有可能udev机制生成的设备文件不具备可读可写的权限,adb无法成功通过该设备文件访问设备 )

       a. 创建文件夹         sudo vim Xiaomi-audroid.rules

       b. 添加规则            SUBSYSTEM=="usb",ENV{"usb_device",MODE="0666"}

 

二. 守护进程

1. 概念:

        568d3d2bd7e54fdd9b5b65dc78de3fff.jpeg

2. 基本特点:

        a.  生存周期长,一般操作系统启动的时候就启动,关闭的时候关闭(这是由开发人员自行将守护进程添加到开机启动项的)

        b.  守护进程和终端无关联,也就是他们没有控制终端,所以当控制终端退出,也不会导致守护进程退出。守护进程是在后台运行,不会占着终端,终端可以执行其他命令。

        c.  守护进程的父进程是init进程,因为它真正的父进程在fork出子进程后就先于子进程exit退出了,所以它是一个由init继承的孤儿进程。(这里ppid为1可看到其父进程为init进程)

6118639a2bd5455fad3f65be6df68cce.png

linux操作系统本身是有很多的守护进程在默默执行,维持着系统的日常活动。大概30-50个

 

3.  ppid = 0:内核进程,跟随系统启动而启动,生命周期贯穿整个系统。      

     cmd列名带 [] 的,叫做内核守护进程。cmd列名名字不带 [] 的,并且以d结尾的一般是普通守护进程。

 

4. 守护进程开发

     功能:创建一个守护进程,该守护进程会周期性地向指定的日志文件中写入当前时间

/**
* 功能:创建一个守护进程,该守护进程会周期性地向指定的日志文件中写入当前时间
*/
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <time.h>
#include <stdio.h>
#include <stdbool.h>static bool flag = true;void handler(int sig)
{printf("I got a signal %d\nI'm quitting.\n", sig);flag = false;
}int main()
{time_t t;int fd;// 创建守护进程daemon(0, 0);// 设置信号处理函数,接收到SIGQUIT信号时退出守护进程struct sigaction act;act.sa_handler = handler;//用于将信号集 act.sa_mask 初始化为空集sigemptyset(&act.sa_mask);act.sa_flags = 0;sigaction(SIGQUIT, &act, NULL);// 进程工作内容,不断向日志中写入当前时间,间隔10swhile (flag){fd = open("/home/orangepi/daemon.log", O_WRONLY | O_CREAT | O_APPEND, 0644);if (fd == -1){printf("open error\n");continue;}t = time(0);/** * 1. 函数 struct tm *localtime(const time_t *timer) 使用timer的值来填充tm结构。*    timer的值被分解为tm结构。* 2. char *asctime(const struct tm *timeptr)返回一个指向字符串的指针,*    它代表了结构 struct timeptr 的日期和时间。* 3. struct tm {int tm_sec;   // 秒,范围从 0 到 59int tm_min;   // 分,范围从 0 到 59int tm_hour;  // 时,范围从 0 到 23int tm_mday;  // 一个月中的日,范围从 1 到 31int tm_mon;   // 月份,范围从 0 到 11int tm_year;  // 年份,从 1900 开始int tm_wday;  // 一周中的日,范围从 0 (周日) 到 6 (周六)int tm_yday;  // 一年中的日,范围从 0 到 365int tm_isdst; // 夏令时标识};*/char *buf = asctime(localtime(&t));write(fd, buf, strlen(buf));close(fd);sleep(10);}return 0;
}

        运行后,输入 ps -ef|grep a.out|grep -v grep 可看到该守护进程。

        输入 sudo kill -3 进程pid ,即可杀死该守护进程。

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

tiktok如何影响用户行为的分析兼论快速数据分析的策略

tiktok如何影响用户行为的分析 快速数据分析的策略流程&#xff1a; 1.确定指标变量&#xff0c;也就确定了数据分析想要回答的问题。想回答不同的问题&#xff0c;就选择不同的指标变量。 变量筛选方法选出指标变量相关的变量&#xff1b; 针对筛选出的变量进行描述性分析和因…

Linux系统安全:从面临的攻击和风险到安全加固、安全维护策略(文末有福利)

1. Linux面临的攻击与风险 1.1. Linux系统架构 Linux系统架构解读&#xff1a; 用户之间隔离内核态与用户态之间隔离用户进程一般以低权限用户运行系统服务一般以特权服务运行用户态通过系统调用进入内核态内核对系统资源进行管理和分配 1.2. Linux系统常见安全威胁 1.2.1.…

Swift-27-类的初始化与销毁

Swift的初始化是一个有大量规则的固定过程。初始化是设置类型实例的操作&#xff0c;包括给每个存储属性初始值&#xff0c;以及一些其他准备工作。完成这个过程后&#xff0c;实例就可以使用了。 简单来讲就是类的构造函数&#xff0c;基本语法如下&#xff1a; 注意&#xff…

【webrtc】Chrome和Firefox在SDP协商过程中,针对localhost的不同处理

内网下chrome端webrtc协商失败 现象 我有一个webrtc服务器在局域网内&#xff0c;使用chrome浏览器访问时&#xff0c;发现webrtc在做媒体协商时失败。 具体表现是&#xff0c;在交换sdp后&#xff0c;ice的状态是oniceconnectionstatechange: failed 但是换成Firefox浏览器…

计算机网络相关知识总结

一、概述 计算机网络可以极大扩展计算机系统的功能机器应用范围&#xff0c;提高可靠性&#xff0c;在为用户提供放方便的同时&#xff0c;减少了整体系统费用&#xff0c;提高性价比。 计算机网络的功能主要有&#xff1a;1. 数据共享&#xff1b;2. 资源共享&#xff1b;3. 管…

前端实现将二进制文件流,并下载为excel文件

目录 一、关于二进制流二、项目实践三、常见问题及解决 一、关于二进制流 含义&#xff1a;二进制流是一种计算机文件格式&#xff0c;它的数据以二进制形式存储&#xff0c;与文本文件不同。 二进制文件可以包含任意类型的数据&#xff0c;例如&#xff1a;图像、音频、视频…

Prompt Engineering,提示工程

什么是提示工程&#xff1f; 提示工程也叫【指令工程】。 Prompt发送给大模型的指令。比如[讲个笑话]、[用Python编个贪吃蛇游戏]、[给男/女朋友写情书]等看起来简单&#xff0c;但上手简单精通难 [Propmpt]是AGI时代的[编程语言][Propmpt]是AGI时代的[软件工程][提示工程]是…

Pytorch常用的函数(八)常见优化器SGD,Adagrad,RMSprop,Adam,AdamW总结

Pytorch常用的函数(八)常见优化器SGD,Adagrad,RMSprop,Adam,AdamW总结 在深度学习中&#xff0c;优化器的目标是通过调整模型的参数&#xff0c;最小化&#xff08;或最大化&#xff09;一个损失函数。 优化器使用梯度下降等迭代方法来更新模型的参数&#xff0c;以使损失函数…

C#仿QQ抽屉式窗体的设计方法:创建特殊窗体

目录 1.WindowFromPoint函数 2.GetParent函数 3.实例 &#xff08;1&#xff09; 图片集合编辑器 &#xff08;2&#xff09;Form1.Designer.cs &#xff08;3&#xff09;Form1.cs 4.生成效果 QQ软件对于绝大多数的人来说再熟悉不过了&#xff0c;它以使用方便、界面美…

MySQL创建数据库与表

要求&#xff1a; 1.在本机安装数据库 2.创建一个数据库db_classes 3.创建一行表db_hero 4.将四大名著中的常见人物插入这个英雄表 目录 要求&#xff1a; 过程&#xff1a; 结果&#xff1a; 命令总结&#xff1a; 过程&#xff1a; 1.安装数据库 http://t.csdnimg…

【软件工程】【第一章概述】d1

关键字&#xff1a; 什么是软件、软件危机、软件工程定义、软件生命周期、软件过程、瀑布模型

设计模式学习笔记 - 开源实战四(中):剖析Spring框架中用来支持扩展的设计模式

概述 上篇文章&#xff0c;学习了 Spring 框架背后蕴含的设计思想&#xff0c;比如约定优于配置、低侵入松耦合、模块化轻量级等等。这些设计思想可以借鉴到其他框架开发中&#xff0c;在大的设计层面提高框架的代码质量。 除了上篇文章降到的设计思想&#xff0c;实际上&…

《R语言与农业数据统计分析及建模》学习——ggplot2绘图基础

一、农业科研数据可视化常用图形及用途 1、数据可视化的重要性 通过可视化&#xff0c;我们可以更直观地理解和分析数据的特征和趋势。 2、常用图表类型及其概述 散点图&#xff1a;用于展示两个变量之间的关系&#xff0c;可用于观察数据的分布、趋势和异常值。 折线图&…

[SWPUCTF 2022 新生赛]1z_unserialize

function __destruct()这是类的析构函数。在 PHP 中&#xff0c;析构函数会在对象被销毁时自动调用。 $a($this->lly): 将 $this->lly 的值作为参数传递给 $a 所代表的函数。 由题目可知&#xff0c;实现nss反序列化的同时&#xff0c;会触发__destruct()的魔术方法将l…

【数据结构(邓俊辉)学习笔记】向量03——常规向量

文章目录 0.概述1.元素访问2.置乱器3.判等器与比较器4.无序查找4.1 判等器4.2 顺序查找4.3 实现4.4 复杂度 5. 插入5.1 算法实现5.2 复杂度分析 6. 删除6.1 区间删除6.2 单元删除6.3 复杂度 7. 唯一化7.1 实现7.2 正确性7.3 复杂度 8. 遍历8.1 实现8.2 复杂度 9. 总结 0.概述 …

【树莓派学习】开发环境配置

【树莓派学习】开发环境配置 ​ Raspberry Pi OS作为基于Linux的系统&#xff0c;其默认网络配置在国内的网络环境下容易出现访问慢甚至无法连接等问题&#xff0c;不便于我们的学习&#xff0c;同时&#xff0c;树莓派上C/C的使用需要单独安装WiringPi。本文主要介绍如何更改…

探索开源的容器引擎--------------Docker容器操作

目录 一、Docker 容器操作 1.1容器创建 1.2查看容器的运行状态 1.3启动容器 1.4创建并启动容器 1.4.1当利用 docker run 来创建容器时&#xff0c; Docker 在后台的标准运行过程是&#xff1a; 1.4.2在后台持续运行 docker run 创建的容器 1.4.3创建容器并持续运行容器…

PYTHON用[邻接列表]及[邻接矩阵]来存储无向图

# 图可以根据边的性质进行分类&#xff1a;# 有向图&#xff08;Directed Graph&#xff09;&#xff1a;在有向图中&#xff0c;边是有方向性的&#xff0c;从一个节点指向另一个节点。这意味着从节点 A 到节点 B 的边与从节点 B 到节点 A 的边可以是不同的&#xff0c;或者根…

parallels desktop19出来了吗?2024最新版本有哪些新功能

Parallels Desktop 19已经发布。以下是关于Parallels Desktop 19的相关信息&#xff1a; 发布时间&#xff1a;Parallels Desktop 19是在近期发布的一款虚拟机软件&#xff0c;具体发布时间为2023年下半年。 功能特点&#xff1a; 针对搭载苹果芯片的Mac进行了优化&#xff0c…

微信小程序webview和小程序通讯

1.背景介绍 1.1需要在小程序嵌入vr页面&#xff0c;同时在vr页面添加操作按钮与小程序进行通信交互 1.2 开发工具&#xff1a;uniapp开发小程序 1.3原型图 功能&#xff1a;.点击体验官带看跳转小程序的体验官带看页面 功能&#xff1a;点击立即咨询唤起小程序弹窗打电话 2.…