一、Android Framework 用到了哪些 IPC 方式
Linux 的 IPC 方式有:文章来源地址https://www.uudwc.com/A/Y62BP/
- 管道
- Socket
- 共享内存
- 信号
- 信号量
- 消息队列
管道通信
- 管道是基于
pipefs
文件系统实现的,也就是多个进程通过对同一个文件进行读写来实现进程间通信。 - 半双工,单向的,通过
pipe(fds)
系统函数调用可得到一对文件描述符,一个fd[0]
只读,一个fd[1]
只写 - 一般是在父子进程之间使用(匿名管道),子进程会继承父进程生成的描述符
- 父进程
fork
出子进程后,子进程继承了父进程的读写fd
,此时父进程关闭只读描述符fd[0]
保留只写描述符fd[1]
,而子进程关闭只写描述符fd[1]
保留只读描述符fd[0]
,这样父进程就可以向子进程写数据进行通信了。即父进程写,子进程读,只能一端写一端读,半双工通信。 - 管道在内存中的实现本质就是一段内核
buffer
缓冲区(
文章来源:https://www.uudwc.com/A/Y62BP/