Java进程立即退出

标签 java python

我正在创建一个流程,如下所示:

Process p = Runtime.getRuntime().exec("nohup /usr/bin/python " + filePath + " &");
Process q = Runtime.getRuntime().exec("/usr/bin/python -m -webbrowser " + url);

我正在尝试在后台运行p,以便q可以正常运行。另外,当Java程序结束时,python脚本不再运行。

最佳答案

您运行的命令是nohup,它确实立即退出。 nohup 启动了一个单独的 Python 进程,但这不是 p 控制的进程。

如果这不是您想要的功能,为什么要使用 nohup& ?如果您只想执行 Python 子进程,只需调用:

Process p = Runtime.getRuntime().exec("/usr/bin/python " + filePath);
<小时/>

请注意,使用 exec 的重载也更安全。它需要一个数组,因此您不必自己进行字符串连接(从而避免某种类型的安全漏洞)。语法略有变化:

Process p = Runtime.getRuntime().exec(new String[]{"/usr/bin/python", filePath});

或者使用 ProcessBuilder :

Process p = new ProcessBuilder("/usr/bin/python", filePath).start();

关于Java进程立即退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38212411/

相关文章:

java - Java 公共(public)元素搜索器中的错误

java - 如何显示旋转 180 度左右的 Android UI 元素

python - 属性错误 : 'module' object has no attribute 'startfile'

python - 比较两个列表并找到变化的索引

python - Scrapy 使用 css 选择器抓取嵌套文本

java - 将图像添加到 JLabel,并在 GridLayout 中显示标签

java - 为什么对 WeakRef 对象的 WeakReference 没有被垃圾回收?

python - 在 bs4.element.Tag 中查找链接

python - Statsmodels - OLS Clustered Standard Errors(不接受来自 DF 的系列?)

JavaFX TextField.setPrefColumnCount() 不起作用