【问题标题】:Does process output end with EOF and if so how to remove?进程输出是否以 EOF 结尾,如果是,如何删除?
【发布时间】:2014-03-16 09:45:59
【问题描述】:

我有一个 Scala 应用程序,它执行 N 次外部进程(使用不同的参数),每次收集一个 Array[Byte],然后将其聚合成 N 个 Array[Byte] 输出的集合。问题是每个进程输出Array[Byte] 是否会以 EOF 结尾?如果是这样,如何将其删除?我使用以下代码在 Scala 中执行此操作:

// redirect output stream of the external process 
val outputStream = new java.io.ByteArrayOutputStream()
val bufferedOutputStream = new java.io.BufferedOutputStream(outputStream, 1024)
// execute external process
val exitCode : Integer = processBuilder #> bufferedOutputStream !
bufferedOutputStream.flush
// read the content of the output stream as a byte array
val content = outputStream.toByteArray // this gives an Array[Byte]

我需要将每个输出作为输入发送到第三个应用程序。因此,我需要删除部分 EOF 分隔符,否则会导致我的第三个应用程序无法读取 N 个输出。

【问题讨论】:

    标签: java linux scala ipc


    【解决方案1】:

    EOF 不是字符,它是指示输入流为空的带外条件。您可以通过继续将内容写入流来“删除”它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-20
      • 2023-02-06
      • 2021-04-10
      • 1970-01-01
      • 2020-06-04
      • 2016-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多