【发布时间】:2011-06-27 11:06:03
【问题描述】:
我使用管道在进程之间进行通信。当我写入管道并且读取它的速度比写入慢时,write() 会阻塞直到可以对管道进行原子写入?
【问题讨论】:
我使用管道在进程之间进行通信。当我写入管道并且读取它的速度比写入慢时,write() 会阻塞直到可以对管道进行原子写入?
【问题讨论】:
是的,至少当正在写入的字节数小于保证是原子的字节数时。
【讨论】:
write() 不需要写入所有传递的数据 - 它可以写入更少,您必须检查实际写入了多少。
【讨论】:
符合 POSIX 的系统应该阻塞。
来自 write(2) 手册页:
"POSIX 要求可以证明在 write() 返回后发生的 read(2) 返回新数据。请注意,并非所有文件系统 符合 POSIX”
【讨论】: