java 查看被占用端口并且杀死相应进程

本文介绍了一种使用Java代码管理本地进程的方法,包括获取特定端口的进程ID、根据进程ID获取映像名称以及根据映像名称关闭进程的详细步骤。通过运行一系列系统命令,这些方法能够帮助开发者有效地监控和控制运行中的进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class TestPort

{

    public static void main(String[] args)

    {

        System.out.println(getPID("3306"));//得到进程ID,3306是端口名称

        System.out.println(getProgramName(getPID("3306")));//根据进程ID得到映像名称

        killTask(getProgramName(getPID("3306")));//根据映像名称关闭进程

    }

     

     

    // 得到进程ID

    public static String getPID(String port){

        InputStream is = null;

        BufferedReader br = null;

        String pid = null;

        try

        {

            String[] args = new String[]{"cmd.exe","/c","netstat -aon|findstr",port};

            is = Runtime.getRuntime().exec(args).getInputStream();

            br = new BufferedReader(new InputStreamReader(is));

            String temp = br.readLine();

            if(temp != null){

                String[] strs = temp.split("\\s");

                pid=strs[strs.length-1];

            }

        }

        catch (IOException e)

        {

            e.printStackTrace();

        }finally{

            try

            {

                br.close();

            }

            catch (IOException e)

            {

                e.printStackTrace();

            }

        }

        return pid;

    }

     

    //根据进程ID得到映像名称

    public static String getProgramName(String pid){

        InputStream is = null;

        BufferedReader br = null;

        String programName = null;

        try

        {

            String[] args = new String[]{"cmd.exe","/c","tasklist|findstr",pid};

            is = Runtime.getRuntime().exec(args).getInputStream();

            br = new BufferedReader(new InputStreamReader(is));

            String temp = br.readLine();

            if(temp != null){

                String[] strs = temp.split("\\s");

                programName=strs[0];

            }

        }

        catch (IOException e)

        {

            e.printStackTrace();

        }finally{

            try

            {

                br.close();

            }

            catch (IOException e)

            {

                e.printStackTrace();

            }

        }

        return programName;

    }

     

    //根据映像名称关闭进程

    public static void killTask(String programName){

        String[] args = new String[]{"Taskkill","/f","/IM",programName};

        try

        {

            Runtime.getRuntime().exec(args);

        }

        catch (IOException e)

        {

            e.printStackTrace();

        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值