如何暂停java程序直到关闭gnome终端

时间:2015-08-22 12:40:08

标签: java

我有这个程序

import java.io.IOException;

public class ShellCommand {
    public void execShellCmd(String cmd) throws IOException{
        Runtime.getRuntime().exec(new String[] {"gnome-terminal", "-x", "bash", "-c", cmd});
    }
}

cmd是一个包含以下参数的字符串:

/home/fireworks/workspace/ABT/hello.sh

其中hello.sh是从java

运行的sh文件

该程序正常工作,只是在打开gnome-terminal后继续正常,不等待关闭gnome-terminal。

我已经尝试了waitFor();方法,但没有任何改变

是否有任何解决方案允许程序等待关闭gnome-terminal?

解决:ubuntu 15的gnome-terminal问题。我用xterm

1 个答案:

答案 0 :(得分:0)

以下适用于我:

import java.io.IOException;

public class ShellCommand {
    public void execShellCmd(String cmd) throws IOException, InterruptedException {

        Process p = Runtime.getRuntime().exec(new String[] {"gnome-terminal", "-x", "bash", "-c", cmd});
        System.out.println( "Started proc" );
        p.waitFor();
        System.out.println( "Done waiting" );
    }

    public static void main( String[] args ) {
        ShellCommand s = new ShellCommand();

        try {
            s.execShellCmd( "sleep 10; echo done" );
        } catch( Exception e ) {
        }
    }
}

我看到“开始proc”打印输出,然后它等待终端完成,然后我看到“完成等待”。