2015-08-22 68 views
0

我有這個片節目的如何暫停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

其中喂.SH是SH文件從Java

程序工作運行,不僅如此,在打開侏儒末端之後繼續正常不等待噸的閉合他侏儒終端。

我已經嘗試過的方法waitFor();但沒有任何變化

是否有允許程序等待GNOME終端關閉任何解決方案?

解決:是Ubuntu的15問題的GNOME終端。我用的xterm

回答

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」打印,然後等待終端來完成,那麼,我認爲「完成等待」。

+0

我做了一個複製和粘貼,但我想要的程序不能正常工作。 我看到: 開始PROC - 打開終端 - 終端仍在工作 - 完成等待。您正在使用什麼版本的Java/Linux有那麼 –

+0

- 開始PROC - 的作品的終端 - 封閉的終端 - 完成等待: - - 終端關閉 我想看到什麼?我看你描述想在一個古老的Fedora 14的箱子我有我的(舊)版本什麼,我看到一個更近的同樣的事情的Ubuntu 14.04 –

+0

我有Ubuntu的15 我使用Eclipse火星 Java版本「1.7。 0_80「(我爲Android構建) –