有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (2) 个答案

  1. # 1 楼答案

    文件系统有帮助/proc/$PID/exe是指向与进程ID对应的可执行文件的符号链接。显然,您只需从Java读取该文件即可

    编辑:以前,你要求“进程ID”,现在是关于TCP/IP端口。。。这使我的回答毫无用处

  2. # 2 楼答案

    如果要列出侦听某个端口的应用程序,可以将unix命令lsofawk结合使用:

    lsof -i :80 | awk '{print $1}'
    

    这将列出您,即侦听端口80的进程中的commandname

    在Java代码中,您可以编写以下代码:

    int port = 80;
    Process p = Runtime.getRuntime().exec("lsof -i :" + port + " | awk '{print $1}'");
    
    BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
    while ((s = reader.readLine()) != null) {
        System.out.println(s);
    }
    

    请注意,如果希望基于进程id(PID)获取进程名称,可以使用以下选项:

    Process p = Runtime.getRuntime().exec("ps -ef | awk '{if($2==\"" + pid + "\") print $8}'");