获取在后台运行的 Java 运行时进程

2023-12-15

我正在编写一个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 应该继续读取您已启动的进程的输出(只要它持续)。

请注意,上面只是伪代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取在后台运行的 Java 运行时进程 的相关文章

随机推荐

  • 从 php 页面 ajax 调用 php 函数

    这是我的 jQuery 代码 ajax type POST url process php success function msg 在 process php 页面中 我有多个函数 sendmail 是函数之一 如何通过ajax调用这个函
  • *ngIf 和局部模板变量

    有人可以解释以下行为背后的原因吗 假设我们有一个 Angular 2 组件 它有 model目的 然后在模板中我们有这样的
  • 我需要导入哪个包才能在 Flash 中使用 JPGEncoder?

    var jpgEncoder JPGEncoder new JPGEncoder 85 var jpgStream ByteArray jpgEncoder encode bmpData 上面是报错 Type was not found o
  • 使用索引访问对象属性会给出未定义的[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 下面是一个包含对象的函数 我希望能够使用参数 即索引
  • 当 WPF 中的文本更改时对文本框强制验证

    我在用着Validation在TextBox上如下
  • tomcat server.xml 文件中的 keyAlias="aaaa" 是什么

    我购买了 SSL 证书并将其安装到 tomcat 中 我创建tomcat keystore我包含在其中的文件server xml文件也放了密码但无法理解keyAlias aaa 如果我输入 keyAlias localhost 那么我会得到
  • 使用正则表达式检查字符串是否包含单个反斜杠

    我已经尝试解决这个问题很长时间了 但就是做不到 它可以是任何字符串 但这是一个示例 This string contains some backslashes 我需要制作一个正则表达式 我可以用它来检查字符串是否包含单个反斜杠 然后我需要将
  • C#如何进行碰撞检测?

    C 中是否有允许碰撞检测的预定义方法 我是 C 新手 正在尝试对两个椭圆进行碰撞检测 是否有任何预定义的方法可以实现碰撞检测 我已经有了绘制椭圆的代码 启动碰撞检测的好方法是什么 private void timer1 Tick objec
  • 如何确定 Excel 区域是否隐藏?

    在我的代码中 我包含一个布尔变量 我想在其中分配范围隐藏属性的值 即 如果范围是隐藏的 则变量的值应为 true 反之亦然 运行代码时 我收到 1004 运行时错误 无法获取 Range 类的隐藏属性 由此 我假设这种情况下的隐藏属性是只写
  • 如何将 functools.singledispatch 与实例方法一起使用?

    Python 3 4added使用静态方法定义函数重载的能力 这本质上是文档中的示例 from functools import singledispatch class TestClass object singledispatch de
  • MVC 验证消息国际化

    例如 我想要这个默认的 ASP NET MVC 4 验证消息 The value qsdqsdqs is not valid for Montant以法语显示 我找到了这个包http nuget org packages Microsoft
  • 从对象数组键/值映射数组

    我需要获取一个数组对象并将其映射 以便新数组只是一个简单的数组 如果每个对象都有 id 例如 id 49 name Rest update test id 12 name Rest test 会成为 49 12 到目前为止我已经尝试过了 m
  • 实例化新的内部类时是否需要关键字“this”?

    Oracle Java SE 教程中的另一个示例 它工作正常 但我不确定创建内部类的实例时是否 为什么需要 this 不管我是否取出来 结果似乎都是一样的 为了清楚起见 我指的是 InnerEvenIterator 迭代器 this new
  • 如何将块 div 的角倒角?

    我有以下 HTML 文档
  • 如何解决curl:(35)错误

    如果我在 CentOS 5 机器上运行以下命令 curl LsS https symfony com installer o usr local bin symfony 我收到此错误 curl 35 error 14077410 SSL r
  • 调试闭包编译器编译的 Javascript

    我有一个复杂的 dojo 应用程序 可以在未编译的情况下正常工作 但在使用 Google 编译后闭包编译器 我在某些行为上发现了细微的差异 事实上 调试起来非常困难 而且我无法找到任何有关使用 Google Closure 编译和未编译的
  • 页面请求中的 UTF-8 字节序列无效

    我在页面请求 永久链接 上收到 UTF 8 中的无效字节序列 我不知道为什么也无法重现它 但我确实遇到了很多这样的异常 A ArgumentError occurred in products index invalid byte sequ
  • URL解码混乱

    我有一个引用以下网址的数据库 http en wikipedia org wiki Herbert Gr F6nemeyer 然而 这似乎是一个错误的 URLEncoding 导致 HttpUtility UrlDecode 给我垃圾 和
  • 如何将 django Rest Framework json 查询结果连接到 dgrid/OnDemandGrid

    我的 JSON 存储 django Rest 框架 返回 count next previous 和 results 的键 count 是可用的行数 下一页 是下一页结果的 URL 例如 ids 26 50 previous 是上一页结果的
  • 获取在后台运行的 Java 运行时进程

    我正在编写一个java应用程序 我需要在正在运行的应用程序的整个生命周期中在后台运行一个进程 这是我所拥有的 Runtime getRuntime exec this works ok Process p Runtime getRuntim