gpt4 book ai didi

java - Mac 上 Java 进程的 PID

转载 作者:行者123 更新时间:2023-12-01 12:24:04 24 4
gpt4 key购买 nike

我正在尝试获取 Mac 上 Java 进程的 pid。该进程应列出目录中的项目,然后打印该进程的 pid。改编此 link 中的 unix 示例后,我的 pid 变量仍然有错误(找不到符号)。

import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;


class processes {
public static void main(String[] args) {
try {
Process p = Runtime.getRuntime().exec("/bin/ls");
final InputStream is = p.getInputStream();
Thread t = new Thread(new Runnable() {
public void run() {
InputStreamReader isr = new InputStreamReader(is);
int ch;
try {
while ((ch = isr.read()) != -1) {
System.out.print((char) ch);
}
} catch (IOException e) {
e.printStackTrace();
}
}
});
t.start();
p.waitFor();
t.join();
if(p.getClass().getName().equals("java.lang.UNIXProcess")) {
/* get the PID on unix/linux systems */
try {
Field f = p.getClass().getDeclaredField("pid");
f.setAccessible(true);
int pid = f.getInt(p);
}
catch (Throwable e) {
}
}
System.out.println("Child Complete : " + pid);
} catch (Exception e) {
e.printStackTrace();
}
}
}

最佳答案

出现编译错误,pid 应在 if 之外声明:

int pid = 0;
if(p.getClass().getName().equals("java.lang.UNIXProcess")) {
/* get the PID on unix/linux systems */
try {
Field f = p.getClass().getDeclaredField("pid");
f.setAccessible(true);
pid = f.getInt(p);
}
catch (Throwable e) {
}
}
System.out.println("Child Complete : " + pid);

关于java - Mac 上 Java 进程的 PID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26482657/

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