Java:获取给定pid的进程

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

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

谢谢

我认为只使用内置库是不可能的。 AFAIK,让运行进程拥有自己的PID(参见function请求和备用机制 )已经非常简单了。

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

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

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

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