【问题标题】:Keep Java Program Running Without Standard In保持 Java 程序在没有标准输入的情况下运行
【发布时间】:2011-07-28 00:31:07
【问题描述】:

我想要完成的是启动一个 Java 程序并让它继续运行,直到用户使用 control-C 将其终止。我意识到可以通过创建一个 BufferedReader 并在读取 BufferedReader 时让它无限循环来做到这一点,但我正在做的事情涉及我对 Java 程序(例如 java -jar app.jar &)的后台处理,这会杀死标准这种方法行不通。我读过一些关于 Java 的守护线程的文章,但我也不认为这在这种情况下是正确的解决方案,因为我希望 JVM 保持活跃。

任何帮助将不胜感激。

谢谢, 克里斯

【问题讨论】:

  • 如果你把它放在后台,用户就无法用 CTRL-C 打断它……但你可以使用 kill ...
  • 你想用这种方法解决什么问题?也许后台程序不是正确的解决方案?或者也许有比 Ctrl-C 更好的方式来中断程序?
  • 您能否详细说明您如何“希望 JVM 保持活力”从而排除守护进程解决方案?我想了解更多。 (我打算指给你Apache Commons Daemon component,因为我今天碰巧读到了它。它成了我的锤子,你的问题看起来很像钉子。=)
  • 我明白你对 Ctrl-C 的看法。我想要的是让 Java 应用程序启动一个线程,如果我从命令行后台运行它,它不会死掉。我目前遇到的问题是后台程序关闭标准,因此从 BufferedReader 读取不起作用。 Apache Commons Daemon 组件是正确的解决方案吗?

标签: java daemon kill bufferedreader


【解决方案1】:

我猜你可能是从不同的进程启动 java 程序?一个潜在的选择可能是集成 Java Service Wrapper ?根据您所做的事情,许可可能是一个问题,您可能不会使用 ctrl-c 终止该进程,但这是一个想法(除了上面给出的其他内容)。

【讨论】:

  • 真正的问题是,当我在后台运行程序时,该标准会关闭。我不相信 Java 服务包装器会对此有所帮助。
猜你喜欢
  • 2012-11-13
  • 1970-01-01
  • 2014-10-26
  • 2016-03-20
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 2019-11-08
相关资源
最近更新 更多