Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java从命名管道连续读取_Java_Named Pipes - Fatal编程技术网

使用Java从命名管道连续读取

使用Java从命名管道连续读取,java,named-pipes,Java,Named Pipes,我正在尝试使用java连续读取命名管道。为python/bash解答这个问题 public class PipeProducer { private BufferedReader pipeReader; public PipeProducer(String namedPipe) throws IOException { this.pipeReader = new BufferedReader(new FileReader(new File(namedPipe))); } p

我正在尝试使用java连续读取命名管道。为python/bash解答这个问题

public class PipeProducer {
    private BufferedReader pipeReader;

public PipeProducer(String namedPipe) throws IOException {
    this.pipeReader = new BufferedReader(new FileReader(new File(namedPipe)));
} 

public void process() {
    while ((msg = this.pipeReader.readLine()) != null) {
          //Process
    }
}

public static void main(String args[]) throws JSONException,IOException {
       PipeProducer p = new PipeProducer("/tmp/testpipe");
       while(true) {
            p.process();              
            System.out.println("Encountered EOF");
            now = new Date();
            System.out.println("End : " + now);
        }       
}       
问题

  • 如果管道在一段时间内没有数据,会发生什么情况
  • 当遇到
    EOF
    时,是否可以重用
    Reader
    对象
  • EOF
    是否仅在管道终止时由管道发送,否则不发送
  • 除非真的出了问题,否则管道能保证正常工作吗 环境是使用Java7的CentOS 6.7

    这是经过测试的,工作正常,但需要处理拐角情况,以确保连续运行

  • 如果管道在一段时间内没有数据,会发生什么情况
  • 程序阻塞直到有数据要读取或检测到EOF,就像连接到任何其他类型文件的
    读取器一样

  • 遇到EOF时是否可以重用读卡器对象
  • 我不会指望的。在这种情况下,关闭
    读取器
    并创建一个新读取器会更安全

  • EOF是否仅在终止时通过管道发送,而不是通过其他方式发送
  • 在Unix上,当管道从一个写入程序变为零,再也没有可用数据时,将从管道接收EOF。我不确定Windows命名管道语义是否在这方面有所不同,但由于您使用的是Linux,这对您来说并不重要

  • 除非真的出了问题,否则管道能保证正常工作吗
  • 如果文件系统上确实存在命名管道,并且您有足够的权限,那么您应该能够可靠地打开它进行读取,但这可能会阻止,直到至少有一个写入程序。除此之外,我不知道你的意思

  • 如果管道在一段时间内没有数据,会发生什么情况
  • 程序阻塞直到有数据要读取或检测到EOF,就像连接到任何其他类型文件的
    读取器一样

  • 遇到EOF时是否可以重用读卡器对象
  • 我不会指望的。在这种情况下,关闭
    读取器
    并创建一个新读取器会更安全

  • EOF是否仅在终止时通过管道发送,而不是通过其他方式发送
  • 在Unix上,当管道从一个写入程序变为零,再也没有可用数据时,将从管道接收EOF。我不确定Windows命名管道语义是否在这方面有所不同,但由于您使用的是Linux,这对您来说并不重要

  • 除非真的出了问题,否则管道能保证正常工作吗
  • 如果文件系统上确实存在命名管道,并且您有足够的权限,那么您应该能够可靠地打开它进行读取,但这可能会阻止,直到至少有一个写入程序。除此之外,我不知道你的意思

    如果管道在一段时间内没有数据,会发生什么情况

    没什么。它会阻塞

    遇到EOF时是否可以重用读卡器对象

    重复使用是为了什么?它已经到了数据的末尾。这个问题没有出现

    EOF是否仅在终止时通过管道发送,而不是通过其他方式发送

    当对等方关闭其管道末端时发送

    除非真的出了问题,否则管道能保证正常工作吗

    无论是在管道中还是在生活中,都不能保证任何东西,但在没有错误的情况下,您应该继续读取发送的任何数据

    如果管道在一段时间内没有数据,会发生什么情况

    没什么。它会阻塞

    遇到EOF时是否可以重用读卡器对象

    重复使用是为了什么?它已经到了数据的末尾。这个问题没有出现

    EOF是否仅在终止时通过管道发送,而不是通过其他方式发送

    当对等方关闭其管道末端时发送

    除非真的出了问题,否则管道能保证正常工作吗


    无论是在管道中还是在生活中,都不能保证任何东西,但如果没有错误,您应该继续读取发送的任何数据。

    事实上,我能够连接这些点。但我唯一担心的是错过了一些事件。大约有多个写入程序150次写入,只有一个管道。我假设管道缓冲区为65536字节。发送数据时读卡器正在运行。但是我没有得到所有的数据,事实上我能够把这些点连接起来。但我唯一担心的是错过了一些事件。大约有多个写入程序150次写入,只有一个管道。我假设管道缓冲区为65536字节。发送数据时读卡器正在运行。但我没有得到所有的数据。