这是我的问题: 我有一个.bat文件,它有许多命令。当我使用processbuilder从我的java程序调用这个bat文件时,它开始逐行执行.bat文件中的命令。但是当它到达执行perl程序的最后一行时,它会挂起并且程序永远不会结束。它永远挂在那里。不知道为什么会这样。只是为了您的信息,perl代码没有问题,我可以执行
答案 0 :(得分:2)
你的perl程序是否写入标准输出?
我怀疑问题是Java进程将子进程的标准输出和标准错误输出重定向到管道。
该管道的接收端连接到java程序,因此如果您无法读取其输出,则从java调用的任何写入标准输出/错误的子进程都将阻塞。
您必须从java程序中删除perl程序的输出或读取子进程的输出(Process.getInputStream()
和/或Process.getErrorStream()
)。
答案 1 :(得分:0)
嘿,我能够解决这个问题。我所要做的就是在我的java代码中包含一个语句,该语句关闭进程的输出流。没有它,它在命令行上等待perl程序永远执行。我不确定这种行为,任何信息都会有所帮助