前面简单了解一下,DBus的架构和简单的应用编程.那么接下来,就来看看,DBus是怎么启动的,这一往篇不涉及内部实现问题,只是介绍dbus-daemon如何启动及涉及哪里配置

一.编译Dbus库完成之后,包含:
可执行文件: dbus-daemon, dbus-launch, dbus-send, dbus-monitor, dbus-cleanup-sockets, dbus-run-session, dbus-test-tool,dbus-update-activation-environment, dbus-uuidgen.这里面最常用的就是dbus-daemon,不然dbus不能使用.其他先不做了解,目前只会用到dbus-daemon.
库文件:libdbus-1.a, libdbus-1.la, libdbus-1.so.3.13.0生成这三个库,包含的就是咱们应用编程接口.比如dbus_bus_get()

二.dbus-daemon
->dbus-deamon是一个D-Bus消息总线daemon,跑在后台,它支持两个应用进程间一对一的通信,dbus-deamon也是用上面的库实现的
->系统启动之后,有两个dbus daemon的实例, 一个称为system, 一个称为session(如果是多个用户,那么会每个用户启动一个),这个实例配置不同,权限也不同
->system 实例使用的配置文件=/etc/dbus-1/system.conf
->session实例使用的配置文件=/etc/dbus-1/session.conf
->一般来说system实例,被init script启动,所以具有root权根.大部分功能用于广播系统事件,比如插拨设备.
->session daemon用于不同桌面的进程通信或不同进程间的通信.
->SIGHUP 信号导致dbus-daemon重新去加载配置,如果你改变配置之后,就需要发信号给dbus-daemon,让其去重新加载配置.

三. dbus-daemon 命令参数
june@june:~$ dbus-daemon -h
dbus-daemon [--version] [--session] [--system] [--config-file=FILE] [--print-address[=DESCRIPTOR]] [--print-pid[=DESCRIPTOR]] [--fork] [--nofork] [--introspect] [--address=ADDRESS] [--systemd-activation] [--nopidfile]

[这些设置选项优先级大于配置文件所配置的]
--session                          针对每个登录用户,普通用户(普通权限的dbus daemon)
--system                          针对系统用户,超级权限(有特权的dbus daemon)
--config-file=FILE            指定dbus daemon相关配置文件位置
--fork                               让dbus daemon变为一个daemon
--nofork                        --fork的反操作
--print-address[=DESCRIPTOR]          打印出dbus daemon监听地址.
--print-pid[=DESCRIPTOR]                 打印出dbus daemon pid
--introspect                      打印出dbus daemon内部实现的方法
--address                          设置监听地址
--nopidfile                        不写pid 到文件(配置文件会配置一个文件来记录dbus daemon pid)
--systemd-activation        可能跟systemd启动服务有关,没做研究.
--syslog                             强制dbus daemon 用syslog(即会记录log,也会输出到标准输出)
--syslog-only                     仅做 syslog
--nosyslog                         仅做标准输出

------>这些是dbus daemon的一些配置
举一些例子:

1.dbus-daemon --session --print-address  --nofork --print-pid

(结果就是开启dbus-daemon session类型, 打印出监听地址,打印出pid, 且不做fork(意味着不是一个daemon))

 root@june:~# dbus-daemon --session --print-address --nofork --print-pidunix:abstract=/tmp/dbus-ylwBCGyhmF,guid=bd7496f59ac6455852a455b45b398e036943

2.dbus-daemon --session --print-address --fork --print-pid 

(这个与1不同的是,做fork,变为一个daemon)

 root@june:~# dbus-daemon --session --print-address --fork --print-pidunix:abstract=/tmp/dbus-01B2SkM7sU,guid=8457d8efbb98cfd3fc6488c15b398e816946root@june:

3.dbus-daemon --session --print-address --fork --print-pid --introspect

(打印出dbus daemon内部所有的方法)

root@june:~# dbus-daemon --session --print-address --fork --print-pid --introspect
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node><interface name="org.freedesktop.DBus"><method name="Hello"><arg direction="out" type="s"/></method><method name="RequestName"><arg direction="in" type="s"/><arg direction="in" type="u"/><arg direction="out" type="u"/></method><method name="ReleaseName"><arg direction="in" type="s"/><arg direction="out" type="u"/></method><method name="StartServiceByName"><arg direction="in" type="s"/><arg direction="in" type="u"/><arg direction="out" type="u"/></method><method name="UpdateActivationEnvironment"><arg direction="in" type="a{ss}"/></method><method name="NameHasOwner"><arg direction="in" type="s"/><arg direction="out" type="b"/></method><method name="ListNames"><arg direction="out" type="as"/></method><method name="ListActivatableNames"><arg direction="out" type="as"/></method><method name="AddMatch"><arg direction="in" type="s"/></method><method name="RemoveMatch"><arg direction="in" type="s"/></method><method name="GetNameOwner"><arg direction="in" type="s"/><arg direction="out" type="s"/></method><method name="ListQueuedOwners"><arg direction="in" type="s"/><arg direction="out" type="as"/></method><method name="GetConnectionUnixUser"><arg direction="in" type="s"/><arg direction="out" type="u"/></method><method name="GetConnectionUnixProcessID"><arg direction="in" type="s"/><arg direction="out" type="u"/></method><method name="GetAdtAuditSessionData"><arg direction="in" type="s"/><arg direction="out" type="ay"/></method><method name="GetConnectionSELinuxSecurityContext"><arg direction="in" type="s"/><arg direction="out" type="ay"/></method><method name="GetConnectionAppArmorSecurityContext"><arg direction="in" type="s"/><arg direction="out" type="s"/></method><method name="ReloadConfig"></method><method name="GetId"><arg direction="out" type="s"/></method><signal name="NameOwnerChanged"><arg type="s"/><arg type="s"/><arg type="s"/></signal><signal name="NameLost"><arg type="s"/></signal><signal name="NameAcquired"><arg type="s"/></signal></interface><interface name="org.freedesktop.DBus.Introspectable"><method name="Introspect"><arg direction="out" type="s"/></method></interface>
</node>

在dbus相关编程中就有dbus_bus_request_name()接口调用,那么这个就是调用的这个列表的接口.

4. dbus-daemon --session --print-address --fork --print-pid --address=unix:abstract=/tmp/dbus-123456

(指定一个监听地址)

root@june:~# dbus-daemon --session --print-address --fork --print-pid --address=unix:abstract=/tmp/dbus-123456
unix:abstract=/tmp/dbus-123456,guid=aa09ca517dbda223d9c7657a5b398fa8
6954
root@june:~# 

----->这里说明的是,如何启动dbus-daemon,  还有一点就是,为什么上面没有设置关于--config-file问题,--config-file默认是/etc/dbus-1/[system|session].conf,下面了解配置里面有都有什么.

DBus daemon 启动(三)相关推荐

  1. Docker源码分析(三):Docker Daemon启动

    http://www.infoq.com/cn/articles/docker-source-code-analysis-part3 1 前言 Docker诞生以来,便引领了轻量级虚拟化容器领域的技术 ...

  2. Android系统10 RK3399 init进程启动(三十八) 属性Selinux实战编程

    配套系列教学视频链接: 安卓系列教程之ROM系统开发-百问100ask 说明 系统:Android10.0 设备: FireFly RK3399 (ROC-RK3399-PC-PLUS) 前言 上一节 ...

  3. 计算机无法使用光驱启动,电脑BIOS怎么设置光盘启动 三种类型BIOS设置光驱启动的图文详解教程...

    怎么设置电脑BIOS让电脑使用光盘启动呢?如何使用光盘安装电脑系统?BIOS怎么修改为光盘启动?本文将给大家介绍三种常见类型的BIOS的光盘启动设置方法,下面请看具体操作步骤. 主板BIOS类型主要有 ...

  4. linux 修改网卡报错xe,centos修改端口出现Failed to start OpenSSH server daemon 启动报错和-xe报错的解决方法...

    修改SSH端口: # vi /etc/ssh/sshd_config 里面找port 22,在前面加上#,去掉注释,然后把22改成你想要的端口. #port 22 建议去掉注释之前,先增加你需要的端口 ...

  5. Docker daemon启动问题

    问题描述 limit机器重启后,我们需要启动docker容器,在执行docker run或者docker ps命令时,报错:docker: Cannot connect to the Docker d ...

  6. linux daemon启动脚本,Linux 启动脚本

    #functions 公共函数/etc/init.d/functions #调用函数source /etc/init.d/functions . /etc/init.d/functions #以守护进 ...

  7. 计算机bios设置系统安装教程,电脑BIOS怎么设置光盘启动 三种类型BIOS设置详解图文教程...

    怎么设置电脑BIOS让电脑使用光盘启动呢?如何使用光盘安装电脑系统?BIOS怎么修改为光盘启动?本文将给大家介绍三种常见类型的BIOS的光盘启动设置方法,下面请看具体操作步骤. 主板BIOS类型主要有 ...

  8. 查看redis进程_redis安装(启动三种方式)

    一.安装redis 第 1 步:下载redis安装包 [root@hadoop105 redis]# wget http://download.redis.io/releases/redis-4.0. ...

  9. Android系统10 RK3399 init进程启动(三十五) 属性文件介绍和生成过程

    配套系列教学视频链接: 安卓系列教程之ROM系统开发-百问100ask 说明 系统:Android10.0 设备: FireFly RK3399 (ROC-RK3399-PC-PLUS) 前言 ini ...

最新文章

  1. iOS使用AVFoundation在视频上添加字幕以及控制字幕时间
  2. JS可以写操作系统?Windows 95被装进Electron App
  3. mysql页码_PHP+MySQL实现输入页码跳转到指定页面功能示例
  4. 企业邮箱自建,该如何选型测试
  5. HT for Web的HTML5树组件延迟加载技术实现
  6. 服务器子系统设备结构图,设备集中管理的方法、服务端和系统
  7. Lucas+阶乘打表+费马小定理模板2.0
  8. 《数字图像处理》实验7
  9. BZOJ_4199_[Noi2015]品酒大会_后缀自动机
  10. 在用origin画图时,图表左上角会出现大写字母C,去除方法:
  11. 易于设置的倒计时页面Easy countdown
  12. media在HTML中作用,web前端:关于css中@media的一些基本使用
  13. 程序设计入门——C语言 翁恺 第1周编程练习
  14. 5*5盒式滤波器matlab代码
  15. linux 设备树 otg,linux下充电IC OTG设备供电控制
  16. golang data race 竞态条件
  17. 语言学中不同视角的抽象与具体——谈索绪尔、乔姆斯基、韩礼德的语言观
  18. javascript的异步编程
  19. 财务大集中虚拟化解决方案
  20. 代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II。

热门文章

  1. 千寻高精度定位系统能在pixhawk系统上使用成功吗?
  2. 如何用java做一个桌面游戏
  3. 全图文详细记录安装 免费SSL证书
  4. 《Angular4从入门到实战》学习笔记(图文)
  5. Thinkphp框架初始及安装部署
  6. 乐鑫(ESPRESSIF) ESP32 ESP-IDF设置环境变量出现“安全频道支持出错”问题的解决办法
  7. Windows10安装Hive3.1.2
  8. 7-4 鸿鸿哥分钱(C++)
  9. 7.23洪资内参(更新中)
  10. 【解决】ubuntu用vim编辑时退格键和上下左右键失灵的问题