2013-06-13 37 views
2
import java.io.*; 

public class GnomeCommand { 

    public static void main(String args[]) throws IOException { 

     try { 
      Runtime r = Runtime.getRuntime(); 
      String[] cmdArray = {"/usr/bin/gnome-terminal", "-e", "ps ax | grep gnome", " ; exec $SHELL"}; 
      r.exec(cmdArray).waitFor(); 
     } catch (InterruptedException ex){ 
      ex.printStackTrace(); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
    } 

} 

问题是我无法保持命令提示符打开。它立即关闭。我也使用了“exec $ SHELL”命令,但结果是一样的。我想在执行命令后让终端保持打开状态。无法保持gnome-terminal打开

+0

可能会有所帮助:http://stackoverflow.com/questions/4465930/prevent-gnome-terminal-from-exiting-after-execution –

+0

不实际。我见过这个。但我想知道我的代码中有什么问题? – ahadcse

回答

0

您的子流程在命令执行结束时结束。在你的情况下,psgrep已经完成执行你的脚本将结束。

尝试用使用xterm -hold选项

xterm -e "ps ax | grep gnome" -hold

+0

对不起,我没有得到你的答案。我的操作系统是Fedora。我不知道xterm终端。如果你只是提到cmdArray中的内容而不是我目前的内容,那对我有帮助。 – ahadcse

+0

在命令行上进行实验,而不是在Java中,如果您在命令行上尝试命令,从另一个shell执行命令,则其行为与您所描述的完全相同。在命令行上使其工作之后,将其分解到Java exec调用中。 – stivlo