不可杀的java程序

时间:2009-10-28 10:47:13

标签: java process operating-system

我在java中开发了一个应用程序。 我需要我的java程序不会终止任何进程资源管理器/任务管理器。

7 个答案:

答案 0 :(得分:7)

正如其他人所说,这是不可能的。 Raymond Chen of Microsoft对原因做了很好的解释。

答案 1 :(得分:6)

不可能......

可能有办法将它从任务管理器或甚至其他专有进程资源管理器中隐藏,但需要访问本机win32 API。

也许您可以使用JNI(Java Native Interface)来实现这一目标,但我仍然持怀疑态度。

&安培;加上JVM本身就是一个当然可以被杀死的过程。

答案 2 :(得分:5)

即使这是可能的,你也不应该想要(更不用说“需要”)来做这件事

唯一可以实现的就是惹恼用户并可能导致法律问题。这样做是没有正当理由的,所以不要这样做。

答案 3 :(得分:2)

我认为这是不可能的。

操作系统应始终能够管理应用程序,这可能涉及终止它们。

答案 4 :(得分:2)

你可以看看rmid。我认为你可以让它在发生故障时自动重启你的服务。据我所知,这就是Jini中经常使用的东西。

(所以这会给你一个外部看门狗,仅基于Java工具。问题当然是你在rmid本身死亡时要做的事情。我想用cron做一些聪明的事。但是如果cron死了怎么办?等等。)

答案 5 :(得分:1)

这是不可能的。

您能够实现的最接近的是向Java程序添加一个将无限期阻塞的关闭挂钩;例如Runtime.getRuntime().addShutdownHook(Thread)

这会影响Posix下的正常终止信号无效。从Windows任务管理器尝试“结束进程”将失败,Windows将最终提示声明该进程没有响应,并且您是否要终止它 - 此时无法阻止终止。

答案 6 :(得分:1)

可以在VC ++和其他语言中使用,因为您可以直接挂接到操作系统本身。 Java程序总是通过JVM作为中间层,如果你能够通过JVM深入到某人的机器上,就像人们所说的那样,这将是一个巨大的安全漏洞:

简短版本:如果您绝对必须这样做,请使用编译本机二进制文件的语言并在您与OS API之间没有VM。