我想我找到了这种行为的原因(至少在linux发行版上)。
ProcessHandle.Info
对象是使用以下方法创建的:
public static ProcessHandle.Info info(long pid, long startTime) {
Info info = new Info();
info.info0(pid);
if (startTime != info.startTime) {
info.command = null;
info.arguments = null;
info.startTime = -1L;
info.totalTime = -1L;
info.user = null;
}
return info;
}
哪里
info.info0(pid)
是对本机方法的调用。
因此,我下载了openjdk源代码并检查了此方法的实现。在linux上,JVM通过读取
/proc/{pid}/stat
,则,
/proc/{pid}/cmdline
,则,
/proc/{pid}/exe
进程终止后不再可用。
回答我的问题:
没有办法得到
ProcessHandle。信息
用于完成的过程。