微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Linux的用户应用程序中注册“ uevent”?

如何解决如何在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"注册一个更改事件的规则。 SUBSYSTEMATTR参数指定仅适用于特定设备的规则(您可以从udevadm中为设备获取这些规则)。 RUN参数是看到事件时如何运行用户空间可执行文件的方式。在以下情况下,他们还使用ENV参数将环境变量传递给可执行文件,并且还使用su中的RUN命令以另一个用户身份运行可执行文件,但这是对于大多数应用程序可能不是必需的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。