【发布时间】:2017-02-24 23:29:15
【问题描述】:
我在 Linux 手册页上寻找答案,但似乎找不到。我知道read() 正在阻塞,但我仍然不确定write()。
谁能指出我需要澄清的任何文档?
【问题讨论】:
-
是的,当然。如果写入缓冲区已满,则写入会阻塞。您当然可以通过读写使自己陷入僵局。 (文件描述符需要显式地设为非阻塞才能不受此影响。)
-
这取决于你正在写入的文件描述符的属性。
-
阻塞意味着在写入完成之前写入不会返回。定义“完成”。一旦它完成了足够的操作以允许在某个时刻完成写操作(即它有数据并且您可以释放缓冲区),它将返回,但它是磁盘上的数据,也许是远程机器 TCP 堆栈中的数据,怀疑
-
C 中没有写,unix/posix 中有。