例如,假设我使用命令“java foo”从名为foo.java的命令行运行程序。
foo.java恰好是一款游戏,它不断运行。直到foo.java完成运行,我不知道如何再次使用命令行,除非我输入ctrl + c。但这会终止当前正在运行的foo.java程序。我可以再次使用命令行而不先终止foo.java吗?如果是这样,怎么样?
答案 0 :(得分:2)
根据您的shell,您可以java foo&
在后台运行该进程(这不是特定于Java),或者您可以使用{{1来设置已经处于前台的进程(暂停,暂停进程),然后CTRL+Z
,它将在后台恢复暂停的进程。
您也可以使用bg
执行相反的操作:一旦您对流程进行了后台处理,您可以使用fg
将其重新置于前面。
您可以使用任意多个流程同时执行所有这些操作。详细了解job control。
答案 1 :(得分: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
查看更多选项。
答案 2 :(得分:0)
假设您使用的是Windows并且不需要Java应用程序的控制台输出,则可以使用javaw Foo
而不是java Foo
并在使用java时立即恢复控制台应用程序运行。