如何使用JNA / JNI替换Windows中的当前Java进程?

时间:2011-03-27 15:17:14

标签: java windows java-native-interface exec

我希望用Unix exec替换当前的Java进程。这里已经有一个similar question,但我更喜欢一个消耗尽可能少的内存的解决方案(accepted answer建议使用ClassLoader,这可能会导致内存泄漏; a类似的简单解决方案是使用另一个流程来启动正确的解决方案)。它肯定可以使用JNI以依赖于平台的方式完成,我认为我可以为Unix做(而且solution对于Unix似乎已经存在),但我对相应的Windows API几乎一无所知。我应该打什么Windows功能?有人做过吗?

2 个答案:

答案 0 :(得分:0)

使用Windows,在基本操作系统上运行时可以选择许多子系统,因此有助于了解您的目标。例如,如果您可以使用C运行时库,那么您可以使用与其unix表兄弟非常相似的_exec()系列函数。也许您可以使用这些来修改jniexec以使用Windows。

答案 1 :(得分:0)

Win32 API不包含'exec'的概念。 POSIX API可以。低级WinNT API具有构建块,但使用它们非常复杂,并且至少在过去,需要求助于未记录的功能。