gpt4 book ai didi

c - 当我们通过在 C 中调用 pipe() 函数获得两个文件描述符时,管道如何是单向的

转载 作者:行者123 更新时间:2023-12-02 16:30:38 24 4
gpt4 key购买 nike

我正在阅读管道函数的文档,我遇到过这个

pipe() creates a pipe, a unidirectional data channel that can be used for interprocess communication

但是它返回两个文件描述符。一种用于阅读,一种用于写作。我错过了什么?

最佳答案

您可以将这两个文件描述符视为管道的末端。你只能写入一端,你只能从另一端读取。如果您想在两个进程之间进行双向通信,则需要两个管道。由于信息在管道中单向流动,因此管道被称为单向的。

+----------+                   +----------+
| | pipe | |
| fd1>=======================>fd2 |
| | ---> | |
| | | |
| | pipe | |
| fd3<=======================<fd4 |
| | <--- | |
+----------+ +----------+

相比之下,您可以写入套接字的任一端,而您写入一端的任何内容都可以被另一端读取。有两个数据流,因此一对套接字足以满足两个进程之间的双向通信。由于信息在套接字中双向流动,因此套接字被称为双向的。

+----------+                   +----------+
| | socket | |
| | ---> | |
| fd1=========================fd2 |
| | <--- | |
| | | |
+----------+ +----------+

关于c - 当我们通过在 C 中调用 pipe() 函数获得两个文件描述符时,管道如何是单向的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63544779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com