C语言 是否有单独的缓冲区用于读取和写入库调用?

rta7y2nd  于 2023-11-16  发布在  其他
关注(0)|答案(1)|浏览(126)

我试图了解数据是如何从同一个文件描述符读取和写入。

network - socket
    connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)
    write(sockfd, buff, large_buffer_size)

字符串
当程序/操作系统正在向文件描述符写入数据时,假设同时我们正在从服务器接收数据。
现在,我想知道它是如何确保数据不被损坏,即数据是要写入和数据是要读取不混合,因为我们指向相同的文件描述符?

fquxozlt

fquxozlt1#

套接字是不寻常的,因为它们通过单个文件描述符提供全双工通信。内核做了一些需要做的事情来使其顺利正确地工作,其中包括,是的,分别缓冲传出和传入数据。从语义上讲,每个套接字都绑定了两个独立的通道,每个方向一个。你甚至可以独立地关闭这些通道。

相关问题