例如,假設我使用命令「java foo」從命令行運行程序foo.java。Java程序運行時可以再次使用命令行嗎?
foo.java恰好是一款遊戲,它不斷運行。直到foo.java完成運行,我不知道如何再次使用命令行,除非我鍵入ctrl + c。但是這終止了當前正在運行的foo.java程序。我可以再次使用命令行而不必先終止foo.java?如果是這樣,怎麼樣?
例如,假設我使用命令「java foo」從命令行運行程序foo.java。Java程序運行時可以再次使用命令行嗎?
foo.java恰好是一款遊戲,它不斷運行。直到foo.java完成運行,我不知道如何再次使用命令行,除非我鍵入ctrl + c。但是這終止了當前正在運行的foo.java程序。我可以再次使用命令行而不必先終止foo.java?如果是這樣,怎麼樣?
根據你的shell,你可以做java foo&
在後臺運行這個進程(這不是特定於Java),或者你可以使用CTRL+Z
(暫停,暫停,暫停該過程),然後bg
,它在後臺恢復暫停的過程。
您也可以使用fg
來做相反的事情:一旦您背上一個過程,您可以通過fg
將它重新帶回前面。
您可以一次執行任意多個過程來完成所有這些工作。閱讀更多關於job control。
This Works!謝謝。 – Solomon
@Solomon不客氣。有關更多詳細信息,請參閱我的編輯:您可以通過作業控制來做一些相當時髦的事情。 –
在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
可查看更多選項。
假設你使用的是Windows,你不需要你的Java應用程序的控制檯輸出,你可以使用javaw Foo
代替java Foo
並同時具有運行以及在Java應用程序讓你的終端回來的時候了。
這取決於你的shell。例如,在bash中,您可以運行'java foo&'並將其作爲後臺任務執行。 – azurefrog
這實際上是一個用戶問題,而不是編程問題。看看[如何在後臺執行Windows命令?](http://superuser.com/questions/198525/how-can-i-execute-a-windows-command-line-in-background)超級用戶。 – azurefrog