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

标签 java linux scala ipc

我有一个 Scala 应用程序,它执行 N 次外部进程(使用不同的参数),每次都收集一个 Array[Byte],稍后将其聚合到 N 个 Array[ 的集合中字节]输出。问题是每个进程输出 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 个输出。

最佳答案

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

关于java - 进程输出是否以 EOF 结尾,如果是,如何删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22435318/

相关文章:

java - Playframework 2.4.3 迁移到 2.7.0 时出现的问题

scala - Spark和SparkSQL : How to imitate window function?

scala - 使用 Scala 解析 XML

java ProcessBuilder 不起作用

java - 相对 Xpath 在 Maven TestNg 中不起作用,但绝对路径有效

java - Spring框架中的应用程序上下文和bean工厂是什么

linux - QDBus问题: getting org. freedesktop.DBus.Error.UnknownMethod,但方法存在

linux - 尝试运行服务时出现 systemctl Exec 格式错误

c - 没有我们可以通过命令行传递给应用程序的命令行参数?

java - 无法找到输出为 128 的原因和方式