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