Java:获取给定pid的进程

时间:2010-10-21 20:52:57

标签: java process pid

假设我已知当前正在运行的进程,如何将其转换为Java中的Process对象? 该进程已经在运行,因此我不想生成另一个进程,我只是想将它封装到我可以在java代码中使用的Process对象中。 有点像:

int pid = getPid();
Process proc = magicGetProcess(pid);

感谢

4 个答案:

答案 0 :(得分:4)

我认为只使用内置库是不可能的。 AFAIK,让正在运行的进程拥有自己的PID已经非常重要了(参见feature requestalternate mechanisms)。

快速查看java.lang.Process class表明您可以使用JNI和本机代码编写java.lang.Process的自定义实现。然后,您的自定义类可以实现额外的方法,例如您问题中的方法。

答案 1 :(得分:0)

在* nix世界中,抓取非子进程的退出代码并不容易,因为只要父进程已经获取子进程的退出代码,退出代码就会与进程一起消失。您可以使用某些跟踪工具附加到正在运行的进程,并在进程终止时获取其退出代码。大多数* nix操作系统都有命令行工具,可以让你以非侵入的方式进行操作(例如Linux上的strace,SunOS上的truss)。但是,您只能对自己的进程使用它们,或者以root身份运行它们。另一种方法是配置操作系统的审计子系统,以记录所有进程的退出代码。

答案 2 :(得分:0)

你做不到。流程中的每个操作都要求流程是子流程。不是一个任意的过程。

答案 3 :(得分:0)

使用RMI怎么样?是否可以将Process对象传递给Process?可能不是,因为Process不可序列化