色彩管理器。从命令行创建设备。对象创建但消失了

问题描述 投票:0回答:1

我正在尝试从命令行为 ColorManager 创建一个显示对象(我没有,因为没有任何程序/守护进程为此运行)。我已经尝试了所有我知道的命令:

dbus-send --system --print-reply --type=method_call --dest=org.freedesktop.ColorManager /org/freedesktop/ColorManager org.freedesktop.ColorManager.CreateDevice string:"MyMonitor" string:"temp" dict:string:string:"Colorspace","RGB","Kind","display"

busctl call --system org.freedesktop.ColorManager /org/freedesktop/ColorManager org.freedesktop.ColorManager CreateDevice ssa{ss} "mymoniotr" "temp" 2 "Colorspace" "RGB" "Kind" "display"

gdbus call --system --dest org.freedesktop.ColorManager --object-path /org/freedesktop/ColorManager --method org.freedesktop.ColorManager.CreateDevice "mymonitor", "temp" '{"Colorspace":"RGB" , "Kind":"display"}'

每次都会创建该对象(我收到返回消息)但我找不到它,它消失了。使用 d-feet,我可以成功创建该对象。 命令行有问题吗?

linux command-line dbus
1个回答
0
投票

一些 D-Bus 服务的设计使得某些对象的生命周期与 D-Bus 客户端的生命周期相关联,一旦客户端与总线断开连接,其资源就会被清理(就像操作系统会当程序退出时关闭所有打开的文件)。

事实上,当您指定

"temp"
作为“范围”参数时, colord 就会执行此操作。默认情况似乎是创建一个普通的内存持久对象,但 CD_OBJECT_SCOPE_TEMP 使其显式地与客户端的生命周期相关联,并在断开连接时删除。与 D-Feet(现已成为 D-Spy)类似,当您关闭程序时,该对象会消失。

简而言之,你需要写一个守护进程。

© www.soinside.com 2019 - 2024. All rights reserved.