可以从JVM调用execve()吗?

时间:2019-05-01 19:41:12

标签: java linux jvm

Java中是否存在直接机制来发出exec*()系统调用,以便用新进程替换JVM? Python,例如具有os.exec*,但我发现JVM语言没有等效的语言。我不需要子进程,例如Runtime.exec()ProcessBuilder。我实际上需要更换过程映像。

@Deviluc建议在此处进行C / JNI黑客攻击: Java Program terminates after JNI method call

但是我真的希望纯Java中有一种更简单的方法。我们不走运吗?

1 个答案:

答案 0 :(得分:0)

通过阅读注释,我的理解是,您运行了一个Java进程的X个实例,每个实例都派生了一个子进程。
派生一个进程时,父进程无法退出。如果是这样,那么您将以孤立过程结束,这不是您想要的。
您实际上并没有详细说明此子过程的功能以及为什么需要在派生的C程序中完成它,但是我建议以下内容:
创建一个与X java进程进行通信的包装程序,并获取输入并返回输出。
因此,与其让X Java进程+ X子进程,不如让X Java进程+ 1包装器进程调用具有不同参数的可执行文件。