2011-08-03 55 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上,你将不得不产生一个新的 进程并等待它。