从命名管道读取(然后停止)

时间:2014-05-25 12:03:47

标签: fortran fortran90 mkfifo

我正在尝试通过命名管道进行两个Fortran程序进行通信,但阅读程序正在暂停。我的命令如下:

> mkfifo /tmp/myfifo
> ./app/fortw /tmp/myfifo &
> ./app/fortr /tmp/myfifo

其中fortw打印数字1到10,'fortr'读取它们

open ( unit = nsave, file = outputfile , form = 'formatted', access = 'stream' )
do while ( .TRUE. )
read ( unit = nsave, fmt = *, end = 10), j
write( 6, *), j
end do

10 continue

它打印数字1 - 6然后挂起,所以我必须fg然后C^C来阻止它。

如果我用./app/fortr或等效的c ++程序替换cat,那么我按预期得到数字1到10,所以问题似乎与阅读而不是写作有关。但是如果我从普通文件而不是fifo读取,./app/fortr会给出预期的结果。

我是否希望能够让它发挥作用,它是如此,如何?

更新:

一个更小的例子。如果test包含数字1到10,那么

./app/fortr test

打印数字1到10

 ./app/fortr <( cat test )

打印数字1到6并挂起

0 个答案:

没有答案