【发布时间】:2013-01-06 05:51:50
【问题描述】:
我想打开一个新的终端窗口并用 java 代码执行我的程序。所以我使用:
Runtime.getRuntime().exec("gnome-terminal -x /path/to/my/program arg1 arg2");
这在 Ubuntu 中运行良好,但不幸的是在 CentOS 中无法运行,问题是终端窗口立即关闭。
我在 stackoverflow 中搜索了很多次,但找不到解决方案。非常感谢!!!
【问题讨论】:
-
您尝试在什么终端仿真器/桌面环境下执行此操作?
-
较新的替代 ProcessBuilder 涵盖了 exec 的一些脆弱性。
-
1) 在创建新进程时会犯一些常见错误——详见When Runtime.exec() won't。这篇文章是检查进程是否失败的first。实施所有提示,即使这样做不会使流程正常工作,它也会提供有关失败原因的更详细信息。 2) 使用
ProcessBuilder构建流程。 3) 为了获得更可靠的结果,请将基于String的参数转换为String[]。 -
自己直接在命令行输入会不会有什么异常?
-
在shell中,
type gnome-terminal在Ubuntu和CentOS机器上的输出是什么?
标签: java linux process terminal runtime.exec