1

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

4

2 回答 2

2

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

于 2011-03-05T19:53:39.467 回答
0

嘿,我能够解决这个问题。我所要做的就是在我的 java 代码中包含一个关闭进程输出流的语句。没有它,它就在命令行上等待 perl 程序永远执行。我不太确定这种行为,任何信息都会有所帮助

于 2013-09-26T11:06:08.437 回答