dbus

Unit文件编写,编写服务脚本

∥☆過路亽.° 提交于 2019-12-07 04:23:59
Unit文件编写参考链接: https://www.freedesktop.org/software/systemd/man/systemd.service.html Unit基础介绍 Unit文件可以从多个位置加载,常见位置如下(优先级 低—>高 ): /usr/local/lib/systemd/system/ :软件包安装后的unit /etc/systemd/system/ :系统管理员安装的unit 备注: ·systemd 单元名仅能包含 ASCII 字符,下划线和点号和有特殊意义的字符('@', '-')。其它字符需要用 C-style "\x2d" 替换。 ·当 systemd 运行在用户模式下时,使用的加载路径是完全不同的。 · 以 # 开头的注释可能也能用在 unit-files 中,但是只能在新行中使用,在systemd的参数后面使用行末注释,则 unit 将会启动失败。 查看加载的位置 # systemctl show --property=UnitPath Unit中的依赖关系处理 使用 systemd 时,可通过正确编写单元配置文件来解决其依赖关系。典型的情况是,单元 A 要求单元 B 在 A 启动之前运行。在此情况下,向单元 A 配置文件中的 [Unit] 段添加 Requires=B 和 After=B 即可。若此依赖关系是可选的,可添加 Wants

Unit文件编写,编写服务脚本

时光总嘲笑我的痴心妄想 提交于 2019-12-06 16:45:39
Unit文件编写参考链接: https://www.freedesktop.org/software/systemd/man/systemd.service.html Unit基础介绍 Unit文件可以从多个位置加载,常见位置如下(优先级 低—>高 ): /usr/local/lib/systemd/system/ :软件包安装后的unit /etc/systemd/system/ :系统管理员安装的unit 备注: ·systemd 单元名仅能包含 ASCII 字符,下划线和点号和有特殊意义的字符('@', '-')。其它字符需要用 C-style "\x2d" 替换。 ·当 systemd 运行在用户模式下时,使用的加载路径是完全不同的。 · 以 # 开头的注释可能也能用在 unit-files 中,但是只能在新行中使用,在systemd的参数后面使用行末注释,则 unit 将会启动失败。 查看加载的位置 # systemctl show --property=UnitPath Unit中的依赖关系处理 使用 systemd 时,可通过正确编写单元配置文件来解决其依赖关系。典型的情况是,单元 A 要求单元 B 在 A 启动之前运行。在此情况下,向单元 A 配置文件中的 [Unit] 段添加 Requires=B 和 After=B 即可。若此依赖关系是可选的,可添加 Wants

QtDBus编程详解(二)

别说谁变了你拦得住时间么 提交于 2019-12-06 08:43:56
QtDBus编程详解(二) 我在上一篇博客 QtDBus编程详解(一) 中主要讲述了与QtDBus以及DBus相关的基本概念,这一章节,我将重点讲述关于QtDBus通信。 QtDBus通信,就必须有服务端和客户端(关键是弄清楚哪一端是server,哪一端是client)。 我们先来看看,QtDBus通信,server和client需要做些什么工作。 server: 1.申请一个总线连接,连接到system dbus或者是session dbus。 2.在总线上挂在服务,使得其他进程可以请求和查询服务。 QtDBus编程详解(一) 中已经提到,service服务,相当于hostname,当我发送消息的时候,我们需要确定发送到哪一个host。只有跟总线注册了service之后,外部进程才可以查询和发送消息。 3.在挂载的服务上注册一个执行服务的对象。 对于Qt来说,是面向对象的。那么,QtDBus或者是进程通信,实际上背后还是两个对象在通信。那么同样,我们需要为该host提供一个可执行服务的对象(即可以发送接收消息以及做其他的相关处理的对象)。 上面的3已经说得很清楚了。通信不管有没有DBus,通信的背后始终是两个对象在对话。普通的Qt的对象是无法实现与DBus的通信的。出于方便和安全考虑,QtDBus有一个DBsu适配器adaptor的概念,该DBus

DBUS 编程总结

送分小仙女□ 提交于 2019-12-06 08:43:23
DBUS是个3层架构的进程间通信系统,包括: 1. 函数库libdbus,用于两个应用程序呼叫联系和交互消息。 2. Message bus daemon,总线守护进程可同时与多个应用程序相连,并能把来自一个应用程序的消息路由到0或者多个其他程序。 3. 一系列基于特定应用程序框架的Wrapper库。 比如libdbus-glib, libdbus-python. 那么使用DBUS无非就这几种方式: 1.使用low-level APIs,即C API,libdus库。官方给出的说法是不建议直接使用C API做开发,很多的C API 只是用来binding更高层的接口而设计的,如果要使用它来做开发测试,可以参考http://www.cnblogs.com/liyiwen/archive/2012/12/02/2798876.html 2.使用特定应用程序框架库,或者说DBusBindings 官方文档是http://www.freedesktop.org/wiki/Software/DBusBindings/ 2.1 dbus-glib 这个DBUS接口封装,官方文档上已经明确说明废弃了,网上有大量资料都是关于这个接口封装的介绍。 http://www.csdn123.com/html/topnews201408/90/1190.htm 这篇文章对dbus

交叉编译D-Bus之备忘录

荒凉一梦 提交于 2019-12-06 08:42:32
安装包命令: ./configure CC=arm-unknown-linux-gnu-gcc --prefix=/home/qudc/nfs --host=arm-linux --cache-file=arm-linux.cache 指定交叉编译工具 指定安装路径 指定目标平台 make make install 1. 把"export PATH=$PATH:/home/qudc/gcc-4.0.2-glibc-2.3.5/arm-unknown-linux-gnu/bin (不要加/)" 加入/home/qudc/.bashrc export交叉编译工具链接路径. 2. 用root apt-get install gcc 3. 解压交叉编译工具和linux kernel 使kernel 中make menuconfig 成功. 会遇到头文件报错问题: 安装libc6-dev 和 libncurses5-dev 这两个包. make menuconfig 成功. 4. 安装pkg-config (只能是0.9版, 系统debian4是0.21版, 不然dbus编译不过) 为glib做准备. apt-get install pkg-config 5. 解决安装glib的编译错误 stack pointer 问题: echo ac_cv_type_long_long=yes>arm

Linux_FHS目录作用分析

最后都变了- 提交于 2019-12-06 08:41:06
总目录概览 目录 英文全名 用途 /bin Binaries 用于存放最常用的二进制命令 /boot Boot 包含引导Linux的重要文件,如grub和内核文件等 /dev Devices 所有设备都在该目录下,包括硬盘和显示器等 /etc etc 系统的所有配置文件都放在它下面 /home Home 存放个用户的家目录($HOME)及其文件和配置 /lib Libraries 系统的库文件,有点像Windows的Program Files /lost+found lost+found 用于存放系统异常时丢失的文件(如突然宕机),以利于恢复 /media Media 用于加载各种媒体,如光盘、软盘等 /mnt Mount 用于加载各种文件系统 /opt Optionally 用于存放安装的“可选”程序 /proc Processes 包含进程等信息,是内存的映射,不是真实目录 /root Root 该目录是root用户的家目录($HOME) /run Run 该目录是是系统每次重启时生成的tmpfs,其真正的链接是/var/run /sbin System-only binaries 用于存放系统专用的二进制命令 /srv Service 服务启动之后需要访问的数据目录 /sys System 用于存放系统信息 /tmp Temporary files 用于存放临时文件 /usr

DBus

时光毁灭记忆、已成空白 提交于 2019-12-06 08:39:49
D-Bus helps coordinate process lifecycle. It makes it simple and reliable to code a “single instance” (?) application or deamon, and to launch applications and deamons on demand when their services are needed. D-Bus is designed for two specific use cases: l A “system bus” for notifications from the system to user sessions, and to allow the system to request input from user sessions l A “session bus” used to implement desktop environments such as GNOME and KDE Converting a value from some other representation into the wire format is called marshaling and converting it back from the wire format

dbus服务自启动方法

雨燕双飞 提交于 2019-12-06 08:39:32
Linux 一般发行版上 "/usr/share/dbus-1/services/"目录就是dbus放service文件的地方。 需要自动启动的服务器 就在这个目录放一个 service文件,内容如下: $ cat /usr/share/dbus-1/services/dhcdbd.service [D-BUS Service] Name=com.redhat.dhcp Exec=/usr/sbin/dhcdbd Name是服务器的公共名,Exec是服务器的执行路径。 在客户请求一个服务,但该服务还没有启动时,dbus会根据这个service文件自动启动服务。 转载于:https://www.cnblogs.com/sbchen/p/10095338.html 来源: CSDN 作者: weixin_30653023 链接: https://blog.csdn.net/weixin_30653023/article/details/96507329

write DBUS Services (I)

空扰寡人 提交于 2019-12-06 08:39:22
Those days I had to make a D-Bus server and client in python and I thought to share with you guys some things about the D-Bus. First of all, what is D-Bus? Well, D-Bus is a system that offers a communication channel for multiple programs. Someone must also distinguish between: session and system bus. The session bus is specific for each user, while the system bus is specially designed for the state of the whole system and can change this state (like adding a new storage device, the internet connection suffers some modification). “Talk is cheap, show me the code” Linus Torvalds One example of a

DBUS发送数据程序1

纵饮孤独 提交于 2019-12-06 08:38:13
DBUS客户端发送程序,发送一个信号,信号携带int型数据。信号的object path为"/test/signal/server",interface名为 "test.signal.Type",信号名为"Test"。接收端可以根据这三个属性来判断是否是想接收的信号。 使用dbus前要建立一个连接,通过这个连接连到dbus总线,类似上车需要买票一样。DBusConnection *dbus_bus_get (DBusBusType type, DBusError *error) 函数就是建立连接用的。第一个参数为dbus连接类型,分为DBUS_BUS_SESSION(会话总线)和DBUS_BUS_SYSTEM(系统总线)。第二个参数用来返回错误消息。返回结果是与dbus建立的连接。 连接建立好了,为了方便使用需要给它起个名字,用dbus_bus_request_name()函数。 dbus_message_new_signal()用来创建一个信号。有个信号还需要往里添加数据。我把DBusMessageIter相当于一个数据容器指针。然后使用dbus_message_iter_init_append()将信号和数据指针挂上关系。然后往DBusMessageIter里挂数据,间接的往信号里放数据。再使用dbus_connection_send()把数据发出去,剩下的就等着接收端收了。