保持Java程序在没有标准的情况下运行

保持Java程序在没有标准的情况下运行,java,daemon,kill,bufferedreader,Java,Daemon,Kill,Bufferedreader,我想完成的是启动一个Java程序并让它一直运行,直到用户用control-C将其杀死。我意识到,创建一个BufferedReader并让它在读取BufferedReader时无休止地循环是可能的,但我正在做的是将Java程序后台化(例如,java-jar app.jar&),它杀死了中的标准,因此该方法不起作用。我已经读了一些关于java守护进程线程的内容,但我也不认为这是本例中的正确解决方案,因为我希望JVM保持活动状态 任何帮助都将不胜感激 谢谢, Chris我猜您可能是从另一个进程启动ja

我想完成的是启动一个Java程序并让它一直运行,直到用户用control-C将其杀死。我意识到,创建一个BufferedReader并让它在读取BufferedReader时无休止地循环是可能的,但我正在做的是将Java程序后台化(例如,java-jar app.jar&),它杀死了中的标准,因此该方法不起作用。我已经读了一些关于java守护进程线程的内容,但我也不认为这是本例中的正确解决方案,因为我希望JVM保持活动状态

任何帮助都将不胜感激

谢谢,
Chris

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

如果您将其设置为后台,则用户无法使用CTRL-C中断程序…但您可以使用kill…您试图用这种方法解决什么问题?也许将程序设置为后台不是正确的解决方案?或者可能有比CTRL-C更好的中断程序的方法?您能否进一步说明“希望JVM保持活力”的方式因此排除了守护进程解决方案的可能性?我想读更多关于这方面的内容。(我想告诉你,因为我今天碰巧读到了。它成了我的锤子,你的问题看起来很像钉子。)我明白你对Ctrl-C的看法。我想要的是让Java应用程序启动一个线程,如果我从命令行对其进行后台处理,该线程不会死亡。我目前面临的问题是将程序的标准关闭,因此从BufferedReader读取不起作用。Apache Commons Daemon组件是正确的解决方案吗?真正的解决方案是什么问题是,当我对程序进行后台处理时,标准将关闭。我不相信Java服务包装器会有帮助。