首页 > 解决方案 > 在停止当前进程的同时启动外部进程

问题描述

不知道什么是正确的词,或者这是否可能。
我想在同一个终端窗口中启动一个外部进程并停止当前进程。
(我想避免为子进程管道 I/O 流。)

public static void main(String[] args) {
    String ip = chooseFromCommandLine();
    String cmdLine = "ping " + ip;

    // launch cmdLine in the same terminal and exit this process
}

本质上是为终端创建一个“启动器”类型的应用程序。

标签: java

解决方案


在 UNIX / Linux / POSIX 中,这方面的术语是“执行”应用程序。当前执行的进程被一个新的应用程序替换。

不幸的是,你不能在纯 Java 中做到这一点。您可以使用从 Java 调用的本机代码来完成此操作。

Java 的等方法在子进程中执行Runtime.exec(...)相当于 POSIX的操作。换句话说,父进程(即JVM)一直在运行。forkexec


推荐阅读