如何通过dbus检测Linux上触发的关机

cidc1ykv  于 2023-06-29  发布在  Linux
关注(0)|答案(1)|浏览(234)

我需要在系统关闭之前执行一些任务。我不能在类析构函数中这样做,因为我的服务不仅可以因为关闭而停止
我的服务已经使用dbus与系统中的其他服务进行通信,因此我更希望有一些dbus信号来通知系统关闭
linuxembeddedsystemd-service
我想在析构函数中执行任务,但析构函数的上下文不适合-我需要执行异步任务。
我期望一些dbus信号能够在它上面订阅

lb3vh1jj

lb3vh1jj1#

通过D-Bus使用systemd-logind Inhibit() API获取delay型抑制器。您将收到一个文件描述符作为调用结果的一部分,因此请确保D-Bus绑定支持它。
用户通过systemd-logind发起的关机将通过D-Bus广播PrepareForSleep信号,实际关机将延迟到您关闭()之前接收到的文件描述符(尽管最多只有几秒钟)。
请参阅xss-lock项目以获取示例。

相关问题