exec 和 dbus-launch 有什么区别?

mil*_*lla 6 d-bus exec

如果我开始一个进程,特别是在会话开始时,使用exec p和 有dbus-launch p什么区别?

Joh*_*ith 7

dbus-launchDBus相关。exec是一个内置的外壳。请参阅他们的联机帮助页/帮助页面:

dbus-launch - Utility to start a message bus from a shell script.
exec - Replace the shell with the given command.
Run Code Online (Sandbox Code Playgroud)

所以...他们基本上做了两件不同的事情...虽然两者都期望启动p作为参数传递的程序,但您可以在 的情况下读到dbus-launch,首先完成其他一些事情:

您可以指定要运行的程序;在这种情况下,dbus-launch将启动一个会话总线实例,设置适当的环境变量,以便指定的程序可以找到总线,然后使用指定的参数执行指定的程序。

在这种情况下,在创建进程之前创建 DBus 守护进程实例,并且它应该运行辅助会话总线,该总线通过环境变量可供子进程使用。

另请注意,在 的情况下exec,当前 shell 会被新程序替换。dbus-launch不会替换 shell,也不会替换与守护进程一起启动的程序。