这是我的问题: 我有一个 .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/