进程间通信一,管道,管道的限制:(1)半双工,数据只能在一个方向上流动(2)管道一般只在具有公共祖先的进程之间使用,通常一个管道由一个进程创建,然后该进程调用fork()函数,此后父子进程可以使用该管道管道的创建:[cpp]view plaincopy#includeintpipe(intfiled...
分类:
系统相关 时间:
2014-10-26 09:08:35
阅读次数:
289
Binder间进程通信的JAVA层接口,主要是通过JNI方法来调用Binder库的C/C++接口在JAVA层,将Service组件称为JAVA服务,Service组件的代理称为JAVA服务代理。一、ServiceManager的Java层代理对象(ServiceManagerProxy)的获取过程。...
分类:
移动开发 时间:
2014-10-24 18:32:28
阅读次数:
223
在分析monkey源码的时候有些背景知识没有搞清楚,比如在看到monkey是使用windowmanager的injectKeyEvent方法注入事件的时候,心里就打了个疙瘩,这种方式不是只能在当前应用中注入事件吗?Google了下发现了国外一个大牛有留下蛛丝马迹描述这个问题,特意摘录下来并做相应部分的翻译,其他部分大家喜欢就看下,我就不翻译了。
How it works
Behin...
ServiceManager,其实也是一个Service,不过它的Server端实现并未使用Binder库的结构实现,而是直接打开binder/dev进行通信的,不具有普遍性。下面以MediaServer中的MediaPlayService为例,说明更加普遍的使用binder通信机制的Service...
分类:
移动开发 时间:
2014-10-24 12:42:13
阅读次数:
161
Service Manager 是Binder进程间通信的核心组件之一: 它扮演者Binder进程间通信上下文(Context Manager)的角色 负责管理系统中的Service组件 向Client组件提供获取代理对象的服务一、Service Manager的启动1、ServiceMana...
分类:
移动开发 时间:
2014-10-23 12:01:25
阅读次数:
180
以下概述Binder通信过程中涉及到的四个对象:Binder本地对象、Binder实体对象、Binder引用对象、Binder代理对象的生死。1、Binder通信的交互过程 1.Client 进程发出进程间通信请求,具体由Client进程中的代理对象通过Binder驱动程序向Server进程中的B....
分类:
移动开发 时间:
2014-10-22 19:55:15
阅读次数:
179
以下内容只大概列个提纲,若要明白其中细节,还请看源码:申明:本人菜鸟,希望得到大神指点一二,余心足已binder 设备:/dev/binderbinder 进程间通信涉及的四个角色:Client Service ServiceManager Binder驱动程序一,Binder驱动程序源码位置:ke...
分类:
移动开发 时间:
2014-10-22 12:41:14
阅读次数:
195
一、管道实现进程间通讯主要的理论知识 1.什么是管道以及分类 管道是两个头的东西,每一个头各连接一个进程或者同一个进程的不同代码,依照管道的类别分有两种管道,匿名的和命名的;依照管道的传输方向分也能够分成两种,单向的双向的。依据管道的特点,命名管道通经常使用在网络环境下不同计算机上执行的进程之间.....
分类:
系统相关 时间:
2014-10-21 19:26:40
阅读次数:
527
有名管道(FIFO)命名管道也被称为FIFO文件,是一种特殊的文件。由于linux所有的事物都可以被视为文件,所以对命名管道的使用也就变得与文件操作非常统一。(1)创建命名管道用如下两个函数中的其中一个,可以创建命名管道。#include #include int mkfifo(const char...
分类:
系统相关 时间:
2014-10-21 12:14:49
阅读次数:
347
一 消息队列的介绍消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度。◆影...
分类:
系统相关 时间:
2014-10-21 12:00:18
阅读次数:
262