当我尝试从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 -xhtop时,我看到解压缩过程仍然在这里。

请帮助。

最佳答案

您可能需要从流程中读取InputStream。请参见Process的javadoc

哪个状态:


  因为某些本机平台仅提供有限的缓冲区大小用于
  标准输入和输出流,无法及时写入输入
  流或读取子进程的输出流可能会导致
  子进程阻塞,甚至死锁。

10-05 21:20