我正在使用一个简单的fork()
父子示例来让孩子生成一些数据,然后write()
其write()
为父。 孩子会primefaces地将less于64kib
(65536字节)的数据写入pipe道。
父节点从pipe道中读取数据,当它接收到EOF
(即:假设远端已closures)时,它会继续执行一些处理逻辑,并在其方便的时候closures,并且不关心需要多长时间终止。
是否保证能够读取在遇到EOF
之前发送的所有客户端数据,或者在读取所有数据之前是否有任何潜在的操作系统级逻辑启动以触发EOF
?
我发现了一个非常类似的问题,但没有收到权威/引用的答案。
谢谢。
是的,父母将能够读取所有的数据。 为了让您放心,请在shell中尝试以下操作:
echo test | (sleep 1; cat)
echo命令立即完成; 管道的另一端将等待一秒钟,然后尝试读取它。 这只是工作。
孩子也可以没有问题地写超过64kB,只要父母会一直循环阅读,尽管这样就不会再是原子了。