【常用知识点-Java】启动新进程

Author:赵志乾
Date:2024-07-05
Declaration:All Right Reserved!!!

1. 简介

        Java内启动一个外部进程(操作系统级别的进程),通常使用ProcessBuilder类。其可以方便、灵活地启动和管理子进程,并且可以为子进程设置环境变量、工作目录以及将输入传给子进程,并捕获其输出。

2. 代码示例

//*********************核心字段************************ 
// 子进程
private Process process;
// 子进程工作目录
private final File workDirectory = new File("/app/");


//*********************核心方法************************
public synchronized boolean start(String traceId) {
    // step1: 若子进程已启动,则先终止子进程
    if (process!= null && process.isAlive()) {
        process.destroy();
        process= null;
    }
    // step2: 依据操作系统类型选择不同的启动命令
    String osName = System.getProperty("os.name").toLowerCase();
    ProcessBuilder processBuilder;
    if (osName.contains("win")) {
            processBuilder = new ProcessBuilder("java.exe", "-cp", "\"demo.jar;lib/*;\"", "Main", "traceId=" + traceId);
        } else if (osName.contains("nix") || osName.contains("nux") || osName.contains("aix")) {
            processBuilder = new ProcessBuilder("java", "-cp", "\"demo.jar:lib/*:\"", "Main", "traceId=" + traceId);
        } else {
            return false;
    }
    // step3: 设置子进程工作目录
    processBuilder.directory(workDirectory);
    // step4: 启动子进程
    try {
        simulatorProcess = processBuilder.start();
        return true;
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

3. 应用场景

        通过webApi控制服务器上某些进程的启停:使用SpringBoot搭建Web服务,对外暴漏接口,请求处理逻辑按需要控制进程启停;

  • 10
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我叫白小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值