香橙派Zero2——Linux的热拔插Udev机制

本文详细介绍了Linux系统中的Udev机制,包括守护进程的概念、开发模式和应用,通过示例代码douyinUtils.c和shouhu.c阐述了如何创建和管理守护进程,同时讲解了udev的配置文件和规则匹配键,以及自动挂载ntfs格式USB设备的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

Udev介绍

守护进程   

守护进程的开发模式

 守护进程的应用

douyinUtils.c 识别douyin程序是否退出

 shouhu.c  别到程序退出后再执行该守护进程里面的程序,即重新启动douyin程序

设置开机启动 

Udev的配置文件

​udev 规则的匹配键

自动挂载U盘

ntfs格式usb挂载


Udev介绍

        

        udev是一个设备管理工具, udev 守护进程 的形式运行,通过侦听内核发出来 uevent 来管理/dev 目录下的设备文件 udev 在用户空间运行,而不在内核空间 运行。它能够根据系统中的硬 件设备的状态动态更新设备文件,包括设备文件的创建,删除等。设备文件通常放在/dev 目录 下。使用udev 后,在 /dev 目录下就只包含系统中真正存在的设备。

守护进程   

        Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行 某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个 系统就是对某个用户程序提供服务。Linux 系统的大多数服务器就是通过守护进程实现的。常见的 守护进程包括系统日志进程syslogd web 服务器 httpd 、邮件服 sendmail 和数据库服务器 mysqld等。守护进程的名称通常以 d 结尾
        UDEV守护进程,它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等。
        基本特点:
  • 生存周期长 [ 非必须 ] ,一般操作系统启动的时候就启动,关闭的时候关闭。
  • 守护进程和终端无关联,也就是他们没有控制终端,所以当控制终端退出,也不会导致守护进程退出
  • 守护进程是在后台运行,不会占着终端,终端可以执行其他命令
  • 一个守护进程的父进程是init 进程,因为它真正的父进程在 fork 出子进程后就先于子进程 exit 退出 了,所以它是一个由init 继承的孤儿进程
  • linux操作系统本身是有很多的守护进程在默默执行,维持着系统的日常活动。大概 30-50

 输入命令可以查看守护进程

ps -efj

 以上运行解析:

  • ppid = 0 :内核进程,跟随系统启动而启动,生命周期贯穿整个系统。
  • cmd列名带 [] 这种,叫内核守护进程
  • 老祖init :也是系统守护进程,它负责启动各运行层次特定的系统服务;所以很多进程的 PPID init ,也负责收养孤儿进程。 </
### Linux Udev 设备管理配置 #### 创建自定义规则文件 为了使特定类型的USB设备能够被正确识别并赋予合适的权限,在`/etc/udev/rules.d/`目录下创建一个新的规则文件,例如命名为`51-android.rules`。在此文件中加入如下内容以确保任何匹配条件的USB设备都将拥有读写权限: ```bash SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666" ``` 此命令指定了当子系统为USB且设备类型为USB设备时应用该规则,并设置相应的访问模式[^2]。 #### 处理事件 Udev通过监听来自内核的通知来响应硬件的变化。每当有新的外设连接到计算机或是断开现有外设时,都会触发一次这样的通知。这些消息通常经由Netlink套接字传递给用户空间程序进行进一步处理[^1]。 对于开发者而言,如果想要捕捉这类变动以便执行某些操作(如自动挂载入的存储介质),可以通过编写C/C++应用程序订阅对应的uevent消息队列或者利用Python等高级语言中的库函数简化开发流程[^3]。 #### 实现细节说明 具体来说,Linux下的功能依赖于内核模块向用户态发送信号的能力。一旦检测到物理层面的状态改变——无论是入还是移除动作——就会立即激活关联的服务来进行必要的调整工作。这其中包括但不限于加载驱动、分配资源以及更新环境变量等任务。 此外,还可以借助守护进程持续监控指定路径下的状态变化情况,从而更加灵活地应对各种复杂的场景需求。例如,在Android平台上可通过继承`UEventObserver`类的方式实现对特定节点的关注,进而及时获取最新的动态信息用于后续逻辑判断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值