ipc

Dbus组成和原理

我的未来我决定 提交于 2019-12-06 08:13:03
在 Linux 系统下写开源代码的程序员,对DBUS应该是不会再陌生了。它的低时延和低消耗等优点吸引了很多人的目光,因为我们现在开发的平台,很多设计到DBUS这个通讯机制,所以我花了比较多的时间去熟悉它。通过这段时间的学习,把笔记也做一下,今天先介绍什么DBUS。 什么是DBUS? DBUS是实质上一个适用于桌面应用的进程间的通讯机制,即所谓的IPC机制。适合在同一台机器,不适合于INTERNET的IPC机制。DBUS不是一个为所有可能的应用的通用的IPC机制,不支持其他IPC机制的很多特性。DBUS提供了一个低时延、低消耗的IPC通讯,因为它采用了二进制的数据交换协议,不需要转换成文本化的数据进行交换,DBUS提供了面向多重对象系统的包装,可以在原有的面向对象的应用框架下使用DBUS,不需要学习新的概念和规范等。 DBUS是支持一对一和多对多的对等通讯,在一对一的直接通讯时,两个应用程序连接在一起,这是最简单的工作方式。在多对多的通讯时,这就需要一个叫DBUS后台的角色去分转,一个应用程序发消息给另外一个应用程序,先到达后台,再让后台将信息发送到目的应用程序。在这里DBUS后台就充当着一个路由器的角色。 DBUS包含了系统更新通知,如插入新设备通知、新软件安装通知等,和桌面应用的交互协作能力,可以作为文件系统监控器和配置服务器。 Dbus由对象、消息、连接、

How to send integer with message queue with POSIX API in linux?

99封情书 提交于 2019-12-06 08:03:48
I try to send integer by msg queue but the function mq_send(mq, &val , sizeof(val), 0); is working for only char type pointer so is there any way to send integer to queue with another function or same function. Regards... sdg Do not read the char* in this case as the only allowed datatype. Many *ix API use char as a generic buffer pointer. View the interface therefore as taking a pointer to buffer and the size of the buffer. That buffer can be anything you like, from a single int, to a struct, seralized string representation of your class, or just about anything else in memory. int i; mq_send

DBus入门实践(1): 基本概念

☆樱花仙子☆ 提交于 2019-12-06 07:50:17
基本概念 可以参考下面链接.或者是官方的教程. 1. linux,dbus示例 Knowing some basic things by example, 推荐: http://laokaddk.blog.51cto.com/368606/943133 http://laokaddk.blog.51cto.com/368606/943148/ 2. Documents Reference D-Bus Specification would give some basic overview of the concepts https://dbus.freedesktop.org/doc/dbus-specification.html DBUS可以完成1对1的IPC, 多对多的IPC, 多对多 需要daemon,和android中的service_manger类似,如同router. DBus的组成 DBus = 对象+消息+link+DbusDaemon 对象 特征 其中对象是 一个 处理消息的实体, 因此其实是 服务端server 对象中有一个或者多个接口 每个interface有一个或者多个method 每个method都是对具体消息的处理 所以最终落实到消息, 消息共有四种,包括了signal,见下面的说明. 对象的寻址用路径表示 路径 在多对多的IPC中

DBus 实现IPC的 配置 及流程 及 代码实现

强颜欢笑 提交于 2019-12-06 07:50:01
com.test.hello.service,安装到dbus系统目录下 [D-BUS Service] Name=com.test.hello Exec=/bin/false SystemdService=hello.service hello.service,安装到systemd下 [Unit] Description=hello [Service] Type=dbus BusName=com.test.hello ExecStart=/usr/bin/hello Restart=on-failure SuccessExitStatus=0 38 [Install] WantedBy=multi-user.target client调用代码 bool request_to_server() { GError *gerror = NULL; GDBusProxy *bproxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE, NULL, "com.test.hello", "/com/test/hello", "com.test.hello", NULL, &gerror); if (NULL == bproxy) { printf ("g_bus_get_sync

DBus学习(1)

有些话、适合烂在心里 提交于 2019-12-06 07:48:52
*引用本文请注明来自 blog.csdn.net/wtz1985 在LINUX系统下写开源代码的程序员,对DBUS应该是不会再陌生了。它的低时延和低消耗等优点吸引了很多人的目光,因为我们现在开发的平台,很多设计到DBUS这个通讯机制,所以我花了比较多的时间去熟悉它。通过这段时间的学习,把笔记也做一下,今天先介绍什么DBUS。 什么是DBUS? DBUS是实质上一个适用于桌面应用的进程间的通讯机制,即所谓的IPC机制。适合在同一台机器,不适合于INTERNET的IPC机制。DBUS不是一个为所有可能的应用的通用的IPC机制,不支持其他IPC机制的很多特性。DBUS提供了一个低时延、低消耗的IPC通讯,因为它采用了二进制的数据交换协议,不需要转换成文本化的数据进行交换,DBUS提供了面向多重对象系统的包装,可以在原有的面向对象的应用框架下使用DBUS,不需要学习新的概念和规范等。 DBUS是支持一对一和多对多的对等通讯,在一对一的直接通讯时,两个应用程序连接在一起,这是最简单的工作方式。在多对多的通讯时,这就需要一个叫DBUS后台的角色去分转,一个应用程序发消息给另外一个应用程序,先到达后台,再让后台将信息发送到目的应用程序。在这里DBUS后台就充当着一个路由器的角色。 DBUS包含了系统更新通知,如插入新设备通知、新软件安装通知等,和桌面应用的交互协作能力

How do I send and receive real-time signals `sigqueue()` in Python?

人盡茶涼 提交于 2019-12-06 07:44:27
Python provides a signals module and os.kill ; does it have a facility for sigqueue() (real-time signals with attached data)? What are the alternatives? You could do it with ctypes >>> from ctypes import * >>> c = cdll.LoadLibrary("libc.so.6") >>> c.sigqueue <_FuncPtr object at 0xb7dbd77c> >>> c.sigqueue(100, 10, 0) -1 >>> You'll have to look up how to make a union in ctypes which I've never done before but I think is possible. One alternative, if no one has done it yet, would be to wrap the C library yourself - should be pretty quick and painless. Look here for more details. 来源: https:/

Dbus组成和原理

不想你离开。 提交于 2019-12-06 07:27:43
在LINUX系统下写开源代码的程序员,对DBUS应该是不会再陌生了。它的低时延和低消耗等优点吸引了很多人的目光,因为我们现在开发的平台,很多设计到DBUS这个通讯机制,所以我花了比较多的时间去熟悉它。通过这段时间的学习,把笔记也做一下,今天先介绍什么DBUS。 什么是DBUS? DBUS是实质上一个适用于桌面应用的进程间的通讯机制,即所谓的IPC机制。适合在同一台机器,不适合于INTERNET的IPC机制。DBUS不是一个为所有可能的应用的通用的IPC机制,不支持其他IPC机制的很多特性。DBUS提供了一个低时延、低消耗的IPC通讯,因为它采用了二进制的数据交换协议,不需要转换成文本化的数据进行交换,DBUS提供了面向多重对象系统的包装,可以在原有的面向对象的应用框架下使用DBUS,不需要学习新的概念和规范等。 DBUS是支持一对一和多对多的对等通讯,在一对一的直接通讯时,两个应用程序连接在一起,这是最简单的工作方式。在多对多的通讯时,这就需要一个叫DBUS后台的角色去分转,一个应用程序发消息给另外一个应用程序,先到达后台,再让后台将信息发送到目的应用程序。在这里DBUS后台就充当着一个路由器的角色。 DBUS包含了系统更新通知,如插入新设备通知、新软件安装通知等,和桌面应用的交互协作能力,可以作为文件系统监控器和配置服务器。 Dbus由对象、消息、连接、 Dbus后台几部分组成。

D-Bus学习(一):总体介绍

泄露秘密 提交于 2019-12-06 07:27:05
   D-Bus的方式在移动手机操作系统中非常重要,包括Maemo,Moblin等以Linux为基础的操作系统。 估计Andriod也大量使用 (Android使用Binder IPC)。D-Bus的相关学习资料见: http://www.freedesktop.org/wiki/Software/dbus ,在网上也有大量的学习资料,在 http://blog.chinaunix.net/u3/111961/ 中有不少的中文资料,收集了很多网络资料。我决定认真学习一下,做一下笔记。主要资料来源于上面两个网站,尤其是freedesktop的D-Bus Tutorial,并参考了wiki,以及 http://www.ibm.com/developerworks/cn/linux/l-dbus.html 和 http://blog.csdn.net/cuijpus/archive/2008/01/30/2073962.aspx 。   有很多IPC( interprocess communication ) ,用于不同的解决方案:CORBA 是用于面向对象编程中复杂的 IPC 的一个强大的解决方案。DCOP 是一个较轻量级的 IPC 框架,功能较少,但是可以很好地集成到 K 桌面环境中。SOAP 和 XML-RPC 设计用于 Web 服务,因而使用 HTTP 作为其传输协议。D-BUS

Android IPC介绍

我怕爱的太早我们不能终老 提交于 2019-12-06 06:47:59
一. Android IPC 简介 IPC全称 Intent-Process Communication,含义为进程通信或跨进程通信,是指两个进程之间的通信。 二. Android中的几种IPC方法 1. 使用Bundle 当在一个进程中启动了另一个进程的Activity 、Service 和Receiver ,我们可以将需要传输的数据放入Bundle中并通过Intent传递出去 2. 使用文件共享 两个进程可以通过读写同一个文件来交换数据,也就是说A进程将数据写在共享文件,B进程通过读取共享文件获取A进程的数据 3. 使用ContentProvider 4. 使用Socket 5. 使用BroadCast 来源: https://www.cnblogs.com/Ayinger/p/11966595.html

Two children of same parent are not communicating using pipe if parent do not call wait()

元气小坏坏 提交于 2019-12-06 06:18:59
Please see the code below: #include<stdio.h> main(){ int pid, fds[2], pid1; char buf[200]; pipe(fds); pid = fork(); if(pid==0) { close(fds[0]); scanf("%s", &buf); write(fds[1], buf, sizeof(buf)+1); } else { pid1 = fork(); if(pid1==0) { close(fds[1]); read(fds[0], buf, sizeof(buf)+1); printf("%s\n", buf); } else { Line1: wait(); } } } If I do not comment out Line1, it is working fine. Please see below: hduser@pc4:~/codes/c/os$ ./a.out hello //*Entry from keyboard* hello //Output hduser@pc4:~/codes/c/os$ But if I comment out Line1, two child processes are not communicating: hduser@pc4:~/codes/c