如何解决如何在Linux的用户应用程序中注册“ uevent”?
我已经编写了电池驱动程序,并且当电源改变时,即从交流电变为电池时,该驱动程序会发送scoped storage
当我运行uevent
时,在断开交流电源后,从udevadm monitor
子系统中看到了一个 KERNEL 和 UDEV CHANGE
事件。
我的要求是,当power_supply
子系统发生CHANGE
事件时通知用户应用程序。我不想从用户应用程序中轮询内核消息或netlink套接字。
我是否可以为此特定的
power_supply
注册/收听 从用户应用程序获取并在回调时获得类似回调函数的信息 一个事件发生了吗?
解决方法
有可能并且有大量参考文献here。在参考中,他们为类似的应用程序使用了更改规则:
# Rule for when switching to battery
ACTION=="change",SUBSYSTEM=="power_supply",ATTR{type}=="Mains",ATTR{online}=="0",ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/USERNAME/.Xauthority" RUN+="/usr/bin/su USERNAME_TO_RUN_SCRIPT_AS -c /usr/local/bin/brightness_notification.sh"
ACTION=="change"
注册一个更改事件的规则。 SUBSYSTEM
和ATTR
参数指定仅适用于特定设备的规则(您可以从udevadm中为设备获取这些规则)。 RUN
参数是看到事件时如何运行用户空间可执行文件的方式。在以下情况下,他们还使用ENV
参数将环境变量传递给可执行文件,并且还使用su
中的RUN
命令以另一个用户身份运行可执行文件,但这是对于大多数应用程序可能不是必需的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。