2011-08-03 88 views
4

這裏是來自python的命令: os.execvp 它運行其他應用程序,當前進程被完全替換爲新進程。從腳本的角度來看,os.execvp永遠不會返回結果。java執行進程替換

現在的問題是如何在Java中做同樣的事情。例如。 - 我有app1.class並運行它。它必須執行其他應用程序,但該過程應該被替換。

你知道如何使它在Java?

謝謝

+0

我不明白過程替換部分。你是什​​麼意思? – CoolBeans

+0

您可以使用[ProcessBuilder.start()](http://download.oracle.com/javase/6/docs/api/java/lang/ProcessBuilder.html#start%28%29)或[Runtime.exec( )](http://download.oracle.com/javase/6/docs/api/java/lang/Runtime.html#exec%28java.lang.String%5B%5D,%20java.lang.String%5B% 5D,%20java.io.File%29)啓動一個新的[Process](http://download.oracle.com/javase/6/docs/api/java/lang/Process.html)。我不是100%確定是否這是你要求的 – CoolBeans

+0

Waht @CoolBeans談到在Unix上最終做fork()/ execve()。爲了有效的實現(在Java 1.6上它總是'fork()'),我認爲'fork()'可以是Java 1.7上的'vfork()'或'posix_spawn()'。 – ninjalj

回答

3

你不能只使用Java。你必須產生一個新的過程,讓舊的過程死亡。

可能在* nix上創建一個JNI庫並讓它爲你執行exec。 只適用於類Unix操作系統。在Windows上,你將不得不產生一個新的 進程並等待它。