【发布时间】: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