当前位置: 技术问答>linux和unix
进程间通信的问题
来源: 互联网 发布时间:2016-11-25
本文导语: 最近因为一个CE的程序模块要一直到Anroid下面.主要是一个进程间广播消息的Service模块。是通过内存映射文件和事件互斥来完成的. 我看了linux的互斥锁和条件锁 都只有一个pthread_cond_init的函数来创建.,如果确保在进程...
最近因为一个CE的程序模块要一直到Anroid下面.主要是一个进程间广播消息的Service模块。是通过内存映射文件和事件互斥来完成的. 我看了linux的互斥锁和条件锁 都只有一个pthread_cond_init的函数来创建.,如果确保在进程间的两个APP wait的是同一个锁/条件呢? 是否Init的第一个参数表示锁的代号,而且是系统空间的? 谢谢!
|
CE中,Windows中有waitsigleobject,或者是内存文件映射,等等机制。
在Linux中,进程间通行的方式有很多。
按照你的需求,你的两个app是不相关的,所谓的不相关就是两个app进程之间是没有父子或者兄弟关系。
那么此时的通信方式比较多了。比如管道,socket.
那么最有效的办法是通过DBus来使得两个APP可以通信。
不过DBus虽然效率最高,但是可能入门比较慢。所以,如果不是特殊的需求,
Linux下面可以通过内存共享,管道,socket来完成。
在Linux中,进程间通行的方式有很多。
按照你的需求,你的两个app是不相关的,所谓的不相关就是两个app进程之间是没有父子或者兄弟关系。
那么此时的通信方式比较多了。比如管道,socket.
那么最有效的办法是通过DBus来使得两个APP可以通信。
不过DBus虽然效率最高,但是可能入门比较慢。所以,如果不是特殊的需求,
Linux下面可以通过内存共享,管道,socket来完成。
|
进程间通信不能使用pthread的,pthread只能线程间互斥,你可以使用文件锁来保证一个时刻只有一个进程在写内存映射的地址,具体可参考apue的14.3节记录锁。
|
管道 socket都可以!