dbus

DBus介绍

前提是你 提交于 2019-11-26 05:00:58
一篇关于DBus的入门介绍,澄清了一些D-Bus中容易混淆的概念 意译:freeworkzz 日期:2010-07-21 来源:http://www.freedesktop.org/wiki/IntroductionToDBus 关于本文 本文不是教程,更不是手册。它不会教你如何使用D-Bus,也不会教你如何安装及如何写基于D-BUS的程序。 这里有的,是解释了D-Bus到底是什么,其背后的概念以及如何将这些概念集合在一起,还有一些必须了解的术语。这里没有不必要的技术细节,也并不关心读者所使用的编程语言。初学者可以在阅读其他教程或指南前先参考本文,它将告诉你使用D-Bus可以做什么。 即使读者已经有了一本好的教程,先读一读本文也是有好处的。在D-Bus的世界中,有很多专用术语,它们与通常的概念并不完全一致。这篇文章将从最基础开始解释这些术语,从而避免理解上的偏差。本文也尝试从不同角度来看D-Bus,避免只专注于一种编程语言来阐述时对使用其他语言的读者产生排斥。 D-Bus概述 D-Bus是一种本地进程间通信机制(不同主机间的进程通信支持可能会在将来加入,但这并不是D-Bus最初设计思想)。D-Bus的特点是轻量级、快速,为主流桌面环境提供统一的进程间通信界面。 与其他重量级的进程间通信技术不同,D-Bus并未使用会话进行通信。D-Bus使用了状态以及连接的概念

DBUS的 hello 消息

六月ゝ 毕业季﹏ 提交于 2019-11-26 05:00:43
DBUS connection 在建立之前,需要给 dbus daemon 发一个 hello消息, 以便获得 connection 的 unique name. 下面是 DBUS specification 里的一段话: Each connection has at least one name, assigned at connection time and returned in response to the org.freedesktop.DBus.Hello method call. This automatically-assigned name is called the connection's unique name . Unique names are never reused for two different connections to the same bus. org.freedesktop.DBus.Hello As a method: STRING Hello () Reply arguments: Argument Type Description 0 STRING Unique name assigned to the connection Before an application is able to send messages to

dbus_bus_request_name返回结果不为DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER

时光总嘲笑我的痴心妄想 提交于 2019-11-26 04:59:31
原因1:使用d-feet或ps -aux查看,所请求的名字已经存在,需要先停止现有的dbus程序才能启动。 原因2:在/etc/dbus-1/下,system或者session的conf配置文件中,设置了命名规则,如果不符合规则会启动不成功,同样发送不成功也可能是配置文件问题。 来源: CSDN 作者: gdizcm 链接: https://blog.csdn.net/gdizcm/article/details/92797203

关于dbus的三个概念的理解

前提是你 提交于 2019-11-26 04:59:10
首先,dbus是利用了dbus这种机制来实现与进程的交互。 在交互当中,连接时,需要提供busname、object-path、interface. 如何理解,上面这三个东西,是理解dbus应用的关键: busname是程序的名字,是在service文件当中指定的。 如下面所示: [root@proEnv23 ~]# cat /usr/lib/systemd/system/systemd-timedated.service # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. [Unit] Description=Time & Date Service Documentation=man:systemd-timedated.service(8) man:localtime

dbus+select+tcp socket

好久不见. 提交于 2019-11-26 04:58:54
#include <dbus/dbus.h> #include <iostream> #include <unistd.h> #include <sys/select.h> #include <string.h> #include <stdlib.h> #include <stdio.h> #include <stdarg.h> #include <stdbool.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <sys/ioctl.h> #include <sys/fcntl.h> #include <assert.h> using namespace std; /** * A watch bind with a fd(owned by the socket), * when fd is ready to read data or write from transport, a notify event occurs */ struct watchlist_t { DBusWatch *watch; struct watchlist_t *next; }; static struct watchlist_t *watchlist = NULL; struct

使用dbus进行进程通信

送分小仙女□ 提交于 2019-11-26 04:58:30
1. 介绍: DBUS是一种高级的进程间通信机制。DBUS支持进程间一对一和多对多的对等通信,在多对多的通讯时,需要后台进程的角色去分转消息,当一个进程发消息给另外一个进程时,先发消息到后台进程,再通过后台进程将信息转发到目的进程。DBUS后台进程充当着一个路由器的角色。 DBUS中主要概念为总线,连接到总线的进程可通过总线接收或传递消息,总线收到消息时,根据不同的消息类型进行不同的处理。DBUS中消息分为四类: 1. Methodcall消息:将触发一个函数调用 ; 2. Methodreturn消息:触发函数调用返回的结果; 3. Error消息:触发的函数调用返回一个异常 ; 4. Signal消息:通知,可以看作为事件消息。 2. 应用场景: 根据DBUS消息类型可知,DBUS提供一种高效的进程间通信机制,主要用于进程间函数调用以及进程间信号广播。 1 . 函数调用 DBUS可以实现进程间函数调用,进程A发送函数调用的请求(Methodcall消息),经过总线转发至进程B。进程B将应答函数返回值(Method return消息)或者错误消息(Error消息)。 2 . 消息广播 进程间消息广播(Signal消息)不需要响应,接收方需要向总线注册感兴趣的消息类型,当总线接收到“Signal消息”类型的消息时,会将消息转发至希望接收的进程。 3. 安装准备: sudo apt

DBUS及常用接口介绍

ⅰ亾dé卋堺 提交于 2019-11-26 04:57:51
1. 概述 1.1 DBUS概述 DBUS是一种高级的进程间通信机制。DBUS支持进程间一对一和多对多的对等通信,在多对多的通讯时,需要后台进程的角色去分转消息,当一个进程发消息给另外一个进程时,先发消息到后台进程,再通过后台进程将信息转发到目的进程。DBUS后台进程充当着一个路由器的角色。 DBUS中主要概念为总线,连接到总线的进程可通过总线接收或传递消息,总线收到消息时,根据不同的消息类型进行不同的处理。DBUS中消息分为四类: 1. Methodcall消息:将触发一个函数调用 ; 2. Methodreturn消息:触发函数调用返回的结果; 3. Error消息:触发的函数调用返回一个异常 ; 4. Signal消息:通知,可以看作为事件消息。 1.2 DBUS应用场景 根据DBUS消息类型可知,DBUS提供一种高效的进程间通信机制,主要用于进程间函数调用以及进程间信号广播。 1 . 函数调用 DBUS可以实现进程间函数调用,进程A发送函数调用的请求(Methodcall消息),经过总线转发至进程B。进程B将应答函数返回值(Method return消息)或者错误消息(Error消息)。 2 . 消息广播 进程间消息广播(Signal消息)不需要响应,接收方需要向总线注册感兴趣的消息类型,当总线接收到“Signal消息”类型的消息时,会将消息转发至希望接收的进程。 1.3

dbus 信号和方法测试

你离开我真会死。 提交于 2019-11-26 04:57:29
代码下载地址 http://download.csdn.net/detail/a624731186/7680405 #Client.c #include <glib.h> #include <dbus/dbus.h> #include <stdbool.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <dbus/dbus-glib.h> #include <pthread.h> static DBusConnection *connect; static gpointer mainloop(gpointer user_data); static DBusHandlerResult filter_func (DBusConnection *connection, DBusMessage *message, void *user_data) ; static int method_get(DBusConnection *dbconn,int a,int b); int main(int argc, char **argv) { DBusError dberr; DBusConnection *dbconn; DBusMessage *msg; DBusMessageIter args; int

DBus初识

╄→尐↘猪︶ㄣ 提交于 2019-11-26 04:57:03
一、DBus是什么? DBus是一套针对桌面环境优化设计的IPC(进程间通信机制),用于进程间的通信或进程与内核的通信。但在很多情况下,通信的一方是消息总线。消息总线是一个特殊的应用,它同时与多个应用通信,并在应用之间传递消息。 二、DBus的工作方式 DBus将有一个持久的 系统总线(system bus),它在 引导时就会启动。这个总线由操作系统和后台进程使用,安全性非常好,以使得任意的应用程序 不能欺骗系统事件。还将有很多 会话总线(session buses),这些总线当用户登录后启动,属于那个用户私有。它是用户的应用程序用来通信的一个会话总线。当然,如果一个应用程序需要接收来自系统总线的消息,它不如直接连接到系统总线 —— 不过,它可以发送的消息将是受限的。 一旦应用程序连接到了一个总线,它们就必须通过添加 匹配器(matchers) 来声明它们希望 收到哪种消息。匹配器为可以基于接口、对象路径和方法进行接收的消息指定一组规则(见后)。 这样就使得应用程序可以集中精力去处理它们想处理的内容,以实现消息的高效路由,并保持总线 上消息的预期数量,以使得不会因为这些消息导致所有应用程序的性能下降并变得很慢。 三、DBus中涉及的基本概念 1、总线名称(Bus Name) 我们可以把Bus Name理解为连接的名称,一个Bus Name总是代表一个应用和消息总线的连接

基于可视化配置的日志结构化转换实现

坚强是说给别人听的谎言 提交于 2019-11-25 20:55:10
导读:数据总线DBus的总体架构中主要包括六大模块,分别是:日志抓取模块、增量转换模块、全量抽取程序、日志算子处理模块、心跳监控模块、Web管理模块。六大模块各自的功能相互连接,构成DBus的工作原理:通过读取RDBMS增量日志的方式来实时获取增量数据日志(支持全量拉取);基于Logstash,flume,filebeat等抓取工具来实时获得数据,以可视化的方式对数据进行结构化输出。本文主要介绍的是DBus中基于可视化配置的日志结构化转换实现的部分。 一、结构化日志的原理 1.1 源端日志抓取 DBus可以对接多种log数据源,例如:Logstash、Flume、Filebeat等。上述组件都是业界比较流行的日志抓取工具,一方面便于用户和业界统一标准,方便用户技术方案的整合;另一方面也避免了无谓的重复造轮子。抓取的数据我们称为原始数据日志(raw data log),由抓取组件将其写入Kafka中,等待DBus后续处理。 1.2 可视化配置规则,使日志结构化 用户可自定义配置日志源和目标端。同一个日志源的数据可以输出到多个目标端。每一条“日志源-目标端”线,用户可以根据自己的需要来配置相应的过滤规则。经过规则算子处理后的日志是结构化的,即:有schema约束,类似于数据库中的表。 1.3 规则算子 DBus设计了丰富易用的算子,用于对数据进行定制化操作