exec p
如果我启动一个进程,特别是在会话开始时,使用和之间有什么区别dbus-launch p
?
答案1
dbus-launch
是数据库总线-有关的。exec
是一个内置的外壳。请参阅他们的联机帮助页/帮助页面:
dbus-launch - Utility to start a message bus from a shell script.
exec - Replace the shell with the given command.
所以...他们基本上做了两件不同的事情...虽然两者都期望启动p
作为参数传递的程序,但您可以在 的情况下读到dbus-launch
,首先完成其他一些事情:
您可以指定要运行的程序;在这种情况下,dbus-launch将启动一个会话总线实例,设置适当的环境变量,以便指定的程序可以找到总线,然后使用指定的参数执行指定的程序。
在这种情况下,在创建进程之前创建 DBus 守护进程实例,并且它应该运行辅助会话总线,该总线通过环境变量可供子进程使用。
另请注意,在 的情况下exec
,当前 shell 会被新程序替换。dbus-launch
不会替换 shell,也不会替换与守护进程一起启动的程序。