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://www.hqwc.cn/news/643507.html

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

相关文章

HttpMessageConverter

一、HttpMessageConverter HttpMessageConverter是Spring MVC中非常重要的一个接口。翻译为&#xff1a;HTTP消息转换器。该接口下提供了很多实现类&#xff0c;不同的实现类有不同的转换方式。 1.1 什么是HTTP消息 HTTP消息其实就是HTTP协议。HTTP协议包括请求协议和响应协议。…

CentOS 系统的优缺点

CentOS &#xff08;社区企业操作系统的缩写&#xff09;是一个基于红帽企业 Linux (RHEL)的免费开源发行版&#xff0c; 旨在为服务器和工作站提供稳定、可靠和安全的平台。 不应将其与CentOS Stream 混淆&#xff0c;后者是即将发布的 RHEL 版本的上游开发平台。 CentOS Li…

webpack中mode、NODE_ENV、DefinePlugin、cross-env的使用

本文讲的全部知识点&#xff0c;都是和webpack相关的。如果你之前有疑问&#xff0c;那本文一定能帮你搞清楚。 问题来源一般是类似下面代码&#xff08;webpack.json中&#xff09;&#xff1a; "scripts": {"dev": "cross-env NODE_ENVdevelopmen…

提升你的C编程技能:使用cURL下载Kwai视频

概述 本文将介绍如何利用C语言以及cURL库来实现Kwai视频的下载。cURL作为一个功能强大的网络传输工具&#xff0c;能够在C语言环境下轻松地实现数据的传输。我们还将探讨如何运用代理IP技术&#xff0c;提升爬虫的匿名性和效率&#xff0c;以适应Kwai视频平台的发展趋势。 正…

探索设计模式的魅力:主从模式与AI大模型的结合-开启机器学习新纪元

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨欢迎加入探索主从模式与AI大模型之旅✨ &#x1f31f;Hey, tech enthusiasts! 你是否还在追…

parallels desktop19.3最新版本软件新功能详细介绍

Parallels Desktop是一款运行在Mac电脑上的虚拟机软件&#xff0c;它允许用户在Mac系统上同时运行多个操作系统&#xff0c;比如Windows、Linux等。通过这款软件&#xff0c;Mac用户可以轻松地在同一台电脑上体验不同操作系统的功能和应用程序&#xff0c;而无需额外的硬件设备…

codeforce#933 题解

E. Rudolf and k Bridges 题意不讲了&#xff0c;不如去题干看图。 传统dp&#xff0c;每个点有两个选择&#xff0c;那么建桥要么不建。需要注意的是在状态转移的时候&#xff0c;桥是有长度的&#xff0c;如果不建需要前d格中建桥花费最少的位置作为状态转移的初态。 #incl…

【前后端】django与vue的结合使用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、前后端分离的简介二、django与vue的结合使用三、总结 前言 随着开发语言及人工智能工具的普及&#xff0c;使得越来越多的人会主动学习使用一些开发工具&a…

的记忆:pandas(实在会忘记,就看作是一个 Excel 表格,或者是 SQL 表,或者是字典的字典。)

pandas 是一个开源的 Python 数据分析库&#xff0c;它提供了快速、灵活和富有表现力的数据结构&#xff0c;旨在使“关系”或“标记”数据的“快速分析、清洗和转换”变得既简单又直观。pandas 非常适合于数据清洗和转换、数据分析和建模等任务。以下是 pandas 的基本概念和主…

多商家AI智能名片商城系统(开源版)——构建高效数字化商业新生态

一、项目概述 1、项目背景 1&#xff09;起源 随着数字化时代的快速发展&#xff0c;传统名片和商城系统已经难以满足企业日益增长的需求。商家需要更高效、更智能的方式来展示自己的产品和服务&#xff0c;与消费者进行互动和交易。同时&#xff0c;开源技术的普及也为开发…

ZYNQ--PL读写PS端DDR数据

PL 和PS的高效交互是zynq 7000 soc开发的重中之重&#xff0c;我们常常需要将PL端的大量数 据实时送到PS端处理&#xff0c;或者将PS端处理结果实时送到PL端处理&#xff0c;常规我们会想到使用DMA 的方式来进行&#xff0c;但是各种协议非常麻烦&#xff0c;灵活性也比较差&am…

“三三裂变”,实体书营销实操细节分享……

“三三裂变”实操细节 一、实验结果 “三三裂变”的实验,结果比较好。就是我们大概有300人报名,但实际行动的只有109人,大概有103人都完成了三个人的目标,也就是说我们通过109人裂变了475人,利润率是1:4.5左右,整个裂变的效率还是可以的,也就是说: 如果你用这种方法有…