为什么我的终端仿真器进程使用 d-bus?

为什么我的终端仿真器进程使用 d-bus?
$ sudo lsof +E -a -U -p 1480
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1001/gvfs
      Output information may be incomplete.
COMMAND    PID USER   FD   TYPE             DEVICE SIZE/OFF  NODE NAME
Xorg       717 root   43u  unix 0xffff975eacf2d400      0t0 30862 @/tmp/.X11-unix/X0 type=STREAM ->INO=28661 1480,lxtermina,3u
dbus-daem  980    t   34u  unix 0xffff975eacf2fc00      0t0 30865 /run/user/1000/bus type=STREAM ->INO=28666 1480,lxtermina,9u
dbus-daem 1073    t   13u  unix 0xffff975eacf2c400      0t0 28664 @/tmp/dbus-vtzJFcQ5Cy type=STREAM ->INO=28663 1480,lxtermina,5u
lxtermina 1480    t    3u  unix 0xffff975eacf2c000      0t0 28661 type=STREAM ->INO=30862 717,Xorg,43u
lxtermina 1480    t    5u  unix 0xffff975eacf2d000      0t0 28663 type=STREAM ->INO=28664 1073,dbus-daem,13u
lxtermina 1480    t    7u  unix 0xffff975eacf2f000      0t0 28665 /run/user/1000/.lxterminal-socket- type=STREAM
lxtermina 1480    t    9u  unix 0xffff975eacf2e800      0t0 28666 type=STREAM ->INO=30865 980,dbus-daem,34u

lxterminal进程与Xorg进程进行通信,以实现lxterminal的GUI。

那么和dbus通信是做什么用的呢?它只是一个终端仿真器,为什么要使用dbus呢?

谢谢。

答案1

请注意,您的系统上可能有多个 DBus 实例:

  • 系统总线,其套接字位于/var/run/dbus/system_bus_socket或类似目录,只能由 root 写入。它在引导时启动。
  • 用户会话总线它在您启动 GUI 桌面会话时启动,并在您注销时消失。
  • 无障碍巴士,最初使用 CORBA,但现在已切换到更轻量级的 DBus。它支持桌面环境的各种辅助功能。

由于该dbus-daemon进程正在您自己的用户帐户上运行

LXDE.org 上的 lxterminal 描述说:

LXTerminal 支持多个选项卡。程序的所有实例共享相同的进程以减少内存使用。

我个人不使用 LXTerminal,但这可能是它使用 DBus 的主要原因:当您尝试lxterminal通过单击桌面图标或菜单来启动新窗口时,启动lxterminal过程可能会使用 D-Bus 来查看是否有另一个窗口它的实例已经在运行。

如果已经有一个 LXTerminal 进程正在运行,则新进程只需向已运行的进程发送“使用这些选项打开一个新窗口/选项卡...”DBus 消息,然后退出。然后,已经运行的 LXTerminal 进程将根据其设置和/或传递给它的选项打开一个新窗口或设置一个新选项卡。

相关内容