首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Runtime.getRuntime().exec调用带有文件的sh shell?

如何使用Runtime.getRuntime().exec调用带有文件的sh shell?
EN

Stack Overflow用户
提问于 2013-07-25 20:43:51
回答 3查看 2K关注 0票数 1

如何在linux终端使用java中的Runtime.getRuntime().exec调用sh文件?

我想从java代码调用新终端中的sh文件。如果我只在终端中运行它,它将作为一个单独的进程运行,即使我的程序退出,它也不会关闭。这就是我不使用ProcessBuilder的原因,如果使用它的程序退出,它会停止由它调用的进程。

EN

回答 3

Stack Overflow用户

发布于 2013-07-25 20:57:44

如果您的脚本被标记为可执行(chmod +x script.sh),则可以通过exec("./script.sh")调用它。否则您可以使用exec("sh script.sh")直接调用它。

票数 0
EN

Stack Overflow用户

发布于 2013-07-25 21:01:57

使用:

代码语言:javascript
复制
Runtime.getRuntime().exec(new String[] { "/bin/bash", "-c", "sh myfile.sh" });
票数 0
EN

Stack Overflow用户

发布于 2013-07-25 21:02:03

由于ProcessBuilder只是Runtime的一个薄薄的包装器,直接使用它不会做您想要的事情。

相反,您需要编写第二个脚本来创建一个终端窗口作为后台进程,并分离此进程。一般方法:

启动外部脚本的

  1. ProcessBuilder

外部脚本使用

  1. 命令nohup(1)为内部脚本创建分离的进程。例如:` `nohup xterm -e /bin/bash "script.sh &"

nohup切断了新的X终端和Java进程之间的连接。&会将整个事件发送到后台,因此该命令在xterm退出之前不会执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17858378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档