【问题标题】:Getting PID in use Java Mac [duplicate]使用Java Mac获取PID [重复]
【发布时间】:2016-02-07 17:15:54
【问题描述】:

这些方法依赖于以下导入。这些都是旧的,从阅读中不应该使用它。无论如何,这只适用于 java 6,我想将它更新到 java 8。

有人知道如何在 OS X 上的 Java 8 中获取 PID 吗?

import sun.jvmstat.monitor.*;
import java.lang.management.*;


        public String getUsageDescription()
        {
            System.out.println("** Get Usage Description");
            int pid = 0;
            RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean();
            pid = Integer.parseInt(rt.getName().substring(0,rt.getName().indexOf("@")));
            System.out.println("Run Time PID = "+pid);
            return new String(getDeviceName()+" "+Integer.toString(pid));
        }


        public static boolean isPIDInUse(int pid)
        {
            try{
                String s = null;
                int java_pid;
                MonitoredHost host = MonitoredHost.getMonitoredHost(s);
                for(Object activeVmPID : host.activeVms())
                {
                    java_pid = (Integer)activeVmPID;
                    System.out.println("****************PID = "+java_pid);
                    if(java_pid == pid){
                        System.out.println("In Use\n");
                        return true;
                    }
                }
            }
            catch(Exception e)
            {
                System.out.println("Exception:  "+e.getMessage());
            }
            return false;

        }

解决办法:

public static boolean isPIDInUse(int pid) {

        try {

            String s = null;
            int java_pid;

            RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean();
            java_pid = Integer.parseInt(rt.getName().substring(0, rt.getName().indexOf("@")));

            if (java_pid == pid) {
                System.out.println("In Use\n");
                return true;
            }
        } catch (Exception e) {
            System.out.println("Exception:  " + e.getMessage());
        }
        return false;
    }

【问题讨论】:

    标签: java macos netbeans


    【解决方案1】:

    使用第一种方法。它在 Java 8 中工作,不使用内部 API。

    请注意,您不需要使用new String(String)

    【讨论】:

    • 谢谢!我更新了原始帖子以显示解决方案。
    • 既然PID不会改变,我会把它放在一个常数中,所以它只计算一次。
    猜你喜欢
    • 2010-10-19
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 2023-03-08
    • 2021-02-10
    相关资源
    最近更新 更多