gpt4 book ai didi

java - 我们可以通过对象引用找到 Unix Pid 吗?

转载 作者:行者123 更新时间:2023-12-01 14:54:00 27 4
gpt4 key购买 nike

我遇到过一种情况,我需要从对象描述中找出 Unix 进程 pid。

例如:-我有一个在 unix 中从 java 代码运行的脚本,用于创建一个新进程。

当从java代码中打印出来时,我得到类似的内容

java.lang.UNIXProcess@87cbde

从上面可以很明显看出该对象引用的是 UNIXProcess。

是否可以借助该对象描述找到该进程在 UNIX 中的 PID?

最佳答案

Is it possible to find the PID of this process in UNIX with the help of this object description?

简单的答案是否定的。没有办法。

首先,“描述符”只是 toString() 默认实现的输出。 。它由对象的类名及其“身份哈希代码”组成。它不对对象的状态进行编码。

身份哈希码是一个通常根据第一次调用方法时对象的地址计算得出的值。但是:

  • 它是一个 32 位(最大值)值,无法在 64 位 JVM 上编码完整的 64 位地址,

  • 该对象可能不再位于计算身份哈希码时的同一地址,并且

  • 在纯 Java 中,您无法将机器地址转换为 Java 引用(反之亦然)。 (如果你弄错了,即使使用非纯 Java 技巧也可能会给你带来 JVM 稳定性问题。)

但是,如果您有 UnixProcess 的对象引用对象,应该可以使用反射来查看其私有(private)字段并挖掘出 UNIX pid 值。

关于java - 我们可以通过对象引用找到 Unix Pid 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14481852/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com