我正在阅读管道函数的文档,并且遇到了这个
pipe() creates a pipe, a unidirectional data channel that can be used for interprocess communication
Run Code Online (Sandbox Code Playgroud)
但它返回两个文件描述符。一种用于阅读,一种用于写作。我缺少什么?
您可以将两个文件描述符视为管道的两端。您只能向一端写入,并且只能从另一端读取。如果您希望两个进程之间进行双向通信,则需要两个管道。由于信息在管道中沿一个方向流动,因此管道被称为单向的。
+----------+ +----------+
| | pipe | |
| fd1>=======================>fd2 |
| | ---> | |
| | | |
| | pipe | |
| fd3<=======================<fd4 |
| | <--- | |
+----------+ +----------+
Run Code Online (Sandbox Code Playgroud)
相反,您可以写入套接字的任一端,并且写入一端的任何内容都可以由另一端读取。有两个数据流,因此一对套接字足以实现两个进程之间的双向通信。由于信息在套接字中是双向流动的,因此套接字被称为是双向的。
+----------+ +----------+
| | socket | |
| | ---> | |
| fd1=========================fd2 |
| | <--- | |
| | | |
+----------+ +----------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1056 次 |
| 最近记录: |