【发布时间】:2014-09-04 19:44:15
【问题描述】:
我只是在学习管道,fifo,我有一个问题。
如果一个程序打开一个管道进行读取,而另一个程序打开一个管道进行写入,会发生什么情况。两个程序并行运行。假设第一个程序尝试读取表单管道,但没有任何信息,所以它被阻塞,直到第二个程序写一些东西。
在第二步中,第一个程序更快,并尝试再次读取管道。这次有一些上次的信息。程序做什么?它是否读取了上次的信息?
谢谢!
【问题讨论】:
我只是在学习管道,fifo,我有一个问题。
如果一个程序打开一个管道进行读取,而另一个程序打开一个管道进行写入,会发生什么情况。两个程序并行运行。假设第一个程序尝试读取表单管道,但没有任何信息,所以它被阻塞,直到第二个程序写一些东西。
在第二步中,第一个程序更快,并尝试再次读取管道。这次有一些上次的信息。程序做什么?它是否读取了上次的信息?
谢谢!
【问题讨论】:
如果我正确解释了您的问题,答案是否定的。第一次读取的任何信息都被消耗并且在管道中不再可用。如果没有进一步写入管道,则第二次读取将阻塞。
【讨论】:
是的,从管道读取的程序将按照其他程序写入的顺序读取所有内容,但不一定以相同的块大小。如果有可用的东西,它会读取它(或适合读取缓冲区的尽可能多的东西)。
【讨论】: