2016-03-09 103 views
0

例如,假设我使用命令“java foo”从命令行运行程序foo.java。Java程序运行时可以再次使用命令行吗?

foo.java恰好是一款游戏,它不断运行。直到foo.java完成运行,我不知道如何再次使用命令行,除非我键入ctrl + c。但是这终止了当前正在运行的foo.java程序。我可以再次使用命令行而不必先终止foo.java?如果是这样,怎么样?

+0

这取决于你的shell。例如,在bash中,您可以运行'java foo&'并将其作为后台任务执行。 – azurefrog

+1

这实际上是一个用户问题,而不是编程问题。看看[如何在后台执行Windows命令?](http://superuser.com/questions/198525/how-can-i-execute-a-windows-command-line-in-background)超级用户。 – azurefrog

回答

2

根据你的shell,你可以做java foo&在后台运行这个进程(这不是特定于Java),或者你可以使用CTRL+Z(暂停,暂停,暂停该过程),然后bg,它在后台恢复暂停的过程。

您也可以使用fg来做相反的事情:一旦您背上一个过程,您可以通过fg将它重新带回前面。

您可以一次执行任意多个过程来完成所有这些工作。阅读更多关于job control

+0

This Works!谢谢。 – Solomon

+0

@Solomon不客气。有关更多详细信息,请参阅我的编辑:您可以通过作业控制来做一些相当时髦的事情。 –

0

在Unix或Linux下,您可以运行java foo &来告诉shell立即给出提示(“在后台运行它”)。但是,如果程序正在向控制台生成输出,则会干扰会话,因为它会直接喷射到屏幕上;在bash中,你可能更喜欢java foo >/dev/null 2>&1 & - 这意味着“将stdout重定向到/ dev/null(丢弃它),将stderr重定向到相同的地方,在背景中”。

或者,如果程序已经启动,您可以执行ctrl-Z来停止程序(暂停它),然后运行shell的bg命令以在后台继续它。

如果您在Windows下运行,您可以使用start java foo启动程序 - 这会为您的程序启动一个新的专用命令窗口,以便您可以继续使用旧窗口。或者,您可以使用start/x java foo来做同样的事情,但没有新的命令窗口。使用help start可查看更多选项。

0

假设你使用的是Windows,你不需要你的Java应用程序的控制台输出,你可以使用javaw Foo代替java Foo并同时具有运行以及在Java应用程序让你的终端回来的时候了。