1 个不稳定版本
0.2.0 | 2023年8月9日 |
---|
#2 在 #readiness
13KB
75 行
dbus-waiter
dbus-waiter 是一个小型程序,用于实现采用 D-Bus 名称的服务的就绪检查。
用法
dbus-waiter --notify-fd FD --bus-name BUS_NAME PROG...
以下示例执行 xdg-desktop-portal
,并在执行进程接管名为 org.freedesktop.portal.Desktop
的总线时,在文件描述符 3
上发送就绪通知
dbus-waiter \
--notify-fd 3 \
--bus-name org.freedesktop.portal.Desktop \
/usr/libexec/xdg-desktop-portal
实现的就绪通知机制在 systemd
和 s6
上都有效。
如果没有文件描述符与 --notify-fd
的值匹配,输出错误将包括
Error: Invalid argument (os error 22)
实现
dbus-waiter 首先进行分叉。子进程监听 NameOwnerChanged
事件,事件发生在 BUS_NAME
总线。父进程 exec
进入 PROG
。
当 BUS_NAME
有新的所有者时,如果所有者是父进程,则子进程将发送就绪通知并退出。
如果另一个进程接管了 BUS_NAME
,则子进程将立即退出。在这种错误场景中,就绪检查预计会超时,并且管理程序 应该 杀死父进程。
注意事项
- 基于 PID 重用的攻击 理论上 是可能的,尽管攻击者需要具有在指定总线上获取
BUS_NAME
的权限。
另请参阅
许可证
本项目采用 ISC 许可证。有关详细信息,请参阅许可证。
依赖项
~12-25MB
~370K SLoC