当前位置: 首页 > 面试题库 >

使Java Runtime Process在后台运行

洪弘毅
2023-03-14
问题内容

我正在编写一个Java应用程序,我需要在该应用程序的整个生命周期中在后台运行进程。

这是我所拥有的:

Runtime.getRuntime().exec("..(this works ok)..");
Process p = Runtime.getRuntime().exec("..(this works ok)..");
InputStream is = p.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);

因此,基本上我每个都打印出来br.readLine()

我不确定的事情是如何在应用程序中实现此代码,因为无论我将其放置在何处(使用Runnable),它都会阻止其他代码运行(如预期的那样)。

我用过Runnable,Thread,SwingUtilities,但没有任何效果…

任何帮助将不胜感激 :)


问题答案:

您可以br.readLine()在线程中读取输入流(即)。这样,它始终在后台运行。

我们在应用程序中实现此方法的方式大致如下:

业务逻辑,即调用脚本的位置:

// Did something...

InvokeScript.execute("sh blah.sh"); // Invoke the background process here. The arguments are taken in processed and executed.

// Continue doing what you were doing

InvokeScript.execute()将如下所示:

InvokeScript.execute(String args) {
// Process args, convert them to command array or whatever is comfortable

Process p = Runtime.getRuntime().exec(cmdArray);

ReaderThread rt = new ReaderThread(p.getInputStream());
rt.start();
}

ReaderThread应该继续读取您开始的过程的输出,只要它持续即可。

请注意,以上只是一个伪代码。



 类似资料:
  • 我有一个简单的java程序,它只是一段代码,可以从数据库中读取并根据某些条件修改数据库的内容。现在,我想要的是这个程序应该在启动时自动启动并在后台静默运行,除非有人从任务管理器中杀死它。我以前从未做过这样的事情,也不知道具体该怎么做。有人能帮我解决这个问题吗?谢谢你...

  • 问题内容: 我想使用ffmpeg在php中将视频转换为.flv。目前,我正在执行此操作,但是它会挂起浏览器,直到文件上传完毕。我一直在寻找有关如何在后台运行exec()进程的php文档,同时使用返回的PID更新进程。这是我发现的: 我还使用一个技巧来跟踪后台任务是否正在使用返回的PID运行: 我是否想创建一个单独的.php文件,然后从php cli运行以执行以下功能之一?我只需要稍微推动一下即可开

  • 本文向大家介绍Docker 在后台运行容器,包括了Docker 在后台运行容器的使用技巧和注意事项,需要的朋友参考一下 示例 要使容器在后台运行,请-d在容器启动期间提供命令行选项: 该选项-d以分离模式运行容器。它也等效于-d=true。 处于分离模式的容器停止时不能自动删除,这意味着不能将--rm选项与-d选项结合使用。

  • 我有一个函数/GUI问题。我正在编码一个轻函数,它开始一个例程,并检查时间是否在上午8点和一些停止时间之间。这个例程从早上8点开始,在那个任意的时间结束。问题是,一旦我点击这个例程的开始,图形用户界面就不会让我带着开始按钮离开窗口,因为它卡在定时例程里面了。我真的希望能够设置计时器在后台运行,然后能够离开图形用户界面的窗口。看起来线程是做到这一点的关键,但我不确定。 我将GUI代码放在一个单独的文

  • MinDoc 0.4以上版本支持在Linux和Windows上以服务的方式后台执行,命令如下: 安装服务 ./mindoc_linux_amd64 service install 卸载服务 ./mindoc_linux_amd64 service remove 执行服务安装后,会创建一个以 mindocd 为服务名的服务。 需要以管理员权限运行

  • 本文向大家介绍怎么使一个命令在后台运行?相关面试题,主要包含被问及怎么使一个命令在后台运行?时的应答技巧和注意事项,需要的朋友参考一下 答案: 一般都是使用 & 在命令结尾来让程序自动运行。(命令后可以不追加空格)