在Java中打开和读取命名管道的超时

时间:2016-02-02 01:17:52

标签: java linux scala named-pipes nonblocking

在我目前的设计中,我有一个命名管道,可以由未指定数量的编写器进程顺序写入。在Scala中只实现了一个读者,但为了简单起见,我们可以假设它是用Java实现的。操作系统是Linux> = 2.6。

读者需要:

  1. 在每个作者发送输入后重新打开管道
  2. 读取管道中的所有输入,直到EOF表示编写器关闭了命名管道的末尾
  3. 这里的主要困难是读者需要能够在给定的超时后取消打开和读取调用。达到超时表示所有作者都已完成工作,读者可以安全退出。

    在C中,我会:

    1. 首先调用open(file_name,O_NONBLOCK)并轮询要打开的管道
    2. 轮询以非阻塞模式读取或将文件描述符更改为阻止模式并使用select()
    3. 在Java中完成此操作的最简单方法是什么?我看过经典的IO和NIO,但是我尝试了更多,设计变得越复杂,它仍然没有完全符合我的要求。

0 个答案:

没有答案