美文网首页
java程序启动新的进程

java程序启动新的进程

作者: bpker | 来源:发表于2019-10-22 16:59 被阅读0次

一般通过java启动操作系统进程有两种方式

1.通过Runtime.getRuntime启动

Runtime.getRuntime().exec());
exec有三个重载方法,分别可以设置相应的命令,系统属性,和新的进程的工作目录

2.通过ProcessBuilder启动

ProcessBuilder是java 1.5后推荐使用的方式,他拥有更多的处理能力。如,获取进程的执行信息,包括标准输出、标准错误输出;设置当前工作目录;改变环境参数等

    ProcessBuilder pb = new ProcessBuilder();
    List<String> cmds = new ArrayList<String>();

    cmds.add("/bin/sh");
    cmds.add("/data/soft/java");
    cmds.add("test.sh");
    pb.command(cmds);
    pb.redirectOutput(ProcessBuilder.Redirect.INHERIT);
    pb.redirectError(ProcessBuilder.Redirect.INHERIT);
    pb.redirectInput(ProcessBuilder.Redirect.INHERIT);
    pb.directory(new File(getWorkerDir()));
    pb.start();

调用start()方法后可以返回一个Process类,该类拥有结构如下:

public abstract class Process {

    //返回连接子进程正常输入的输出流
    abstract public OutputStream getOutputStream();

    //返回连接子进程输出的输入流
    abstract public InputStream getInputStream();

    //返回连接子进程异常输出的输入流
    abstract public InputStream getErrorStream();

    //促使当前线程等待,直至只当进程已经结束。子进程结束时函数立即返回
    abstract public int waitFor() throws InterruptedException;

    //返回子进程结束时候的退出值
    abstract public int exitValue();

    //杀死子进程
    abstract public void destroy();
}

相关文章

  • 后端操作汇总

    一、管理Java程序 启动java进程(关闭terminal程序会退出): 启动后台java进程(关闭termin...

  • 1. 基本知识

    进程 进程(process)是程序的运行实例 运行一个Java程序的实质是启动一个Java虚拟机进程 进程是程序向...

  • java程序启动新的进程

    一般通过java启动操作系统进程有两种方式 1.通过Runtime.getRuntime启动 Runtime.ge...

  • Java类加载机制和反射-1

    启动Java程序时,会启动一个Java虚拟机进程,程序里的线程都处于虚拟机进程里。同一个jvm的所有线程,...

  • javaSE_day17_反射

    应用程序启动: java 类名 调用JVM,启动 JVM进程 应用程序结束: 1.所有代码执行完了; ...

  • java类加载器和类反射使用示例

    一、一个命令对应一个进程。 当我们启动一个Java程序,即启动一个main方法时,都将启动一个Java虚拟机进程,...

  • 多线程编程

    JAVA VM 启动的时候会有一个进程java.exe 该进程至少有一个线程负责java程序的运行 而且这个线程的...

  • redisson内存溢出排查

    前言 Java进程快照的形成 使用 -XX:HeapDumpOnOutOfMemoryError在应用程序启动的加...

  • 新特性12-强制终止进程

    当你用Java启动外部进程后,一旦这个进程崩溃,主程序就会陷入很麻烦的境地。现在,Java 8中的Process类...

  • 理解一下java的多线程

    进程&&线程: 一个进程中可以有多个线程、 java虚拟机启动的时候会有一个进程,至少有一个线程负责java程序的...

网友评论

      本文标题:java程序启动新的进程

      本文链接:https://www.haomeiwen.com/subject/vnzqvctx.html