当我尝试从Java执行外部程序时,请使用以下代码:
Process p;
rn = Runtime.getRuntime();
String[] unzip = new String[2];
unzip[0]="unzip";
unzip[1]=archive ;
public void dezip() throws IOException{
p = rn.exec(unzip);
int ret = p.exitValue();
System.out.println("End of unzip method");
但是我的最后一个
System.out
永远不会执行,就好像我们从unzip
方法退出一样。unzip()
调用仅完成一半的工作,仅解压缩了我的存档的一部分。当我从命令行使用
ps -x
或htop
时,我看到解压缩过程仍然在这里。请帮助。
最佳答案
您可能需要从流程中读取InputStream。请参见Process的javadoc
哪个状态:
因为某些本机平台仅提供有限的缓冲区大小用于
标准输入和输出流,无法及时写入输入
流或读取子进程的输出流可能会导致
子进程阻塞,甚至死锁。