进程输出是不是以 EOF 结尾,如果是,如何删除?

Posted

技术标签:

【中文标题】进程输出是不是以 EOF 结尾,如果是,如何删除?【英文标题】: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 个输出。

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于进程输出是不是以 EOF 结尾,如果是,如何删除?的主要内容,如果未能解决你的问题,请参考以下文章

子进程 readline 挂起等待 EOF

EOF是什么

EOF

EOF是什么?

如何知道下一个字符是不是是 C++ 中的 EOF

C++怎么用eof判断txt文件到文件结尾了没