java - 从 Java 程序执行批处理文件时出错

标签 java perl process batch-file processbuilder

这是我的问题: 我有一个 .bat 文件,其中包含许多命令。当我使用 processbuilder 从 java 程序调用此 bat 文件时,它开始逐行执行 .bat 文件中的命令。然而,当它到达执行 perl 程序的最后一行时,它会挂起并且程序永远不会结束。它永远卡在那里。知道为什么会发生这种情况。仅供引用,perl 代码没有问题,我能够执行

最佳答案

您的 Perl 程序是否写入标准输出? 我怀疑问题在于 Java 进程将子进程的标准输出和标准错误输出重定向到管道。 该管道的接收端连接到 java 程序,因此,如果无法读取其输出,则从 java 调用的任何写入标准输出/错误的子进程都将阻塞。 您必须消除 perl 程序的输出或从 java 程序中读取子进程的输出(Process.getInputStream() 和/或 Process.getErrorStream())。

关于java - 从 Java 程序执行批处理文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5153263/

相关文章:

multithreading - 何时使用进程、多线程或两者都不使用

java - 如何将 Metamask 连接到 Web3J (java)

perl - 在 Perl 中,如何将字符串中的多个十进制数字转换为它们的十六进制等效值?

Linux 内核 : Threading vs Process - task_struct vs thread_info

java - 错误后如何重新启动应用程序?

perl - 如何在同一目录上多次有效地使用 Perl 的 readdir?

java - 跨越 JTable 中所有列的单元格

java - 在使用 wsdl2java 创建 Web 服务客户端并使用它之后,我得到了 Unexpected Attachment type =class

java无法调用第二类

perl - 您如何反省 MooseX::Method::Signatures 方法以查看它们采取的论点?