【问题标题】:How do I fork an external process in java如何在java中分叉一个外部进程
【发布时间】:2015-08-02 00:29:01
【问题描述】:

我正在尝试在 Java 中创建一个新的外部进程(例如计算器)。我是操作系统的新手,但我了解到可以使用类似的东西: Runtime.getRuntime ().exec ("C:\\Windows\\system32\\calc.exe");。然而,这实际上并没有派生一个新的进程。无论如何我可以使用 java fork 一个外部进程吗?

【问题讨论】:

  • 在什么情况下不会启动一个新进程?无论如何,Windows 通常不会fork。另外,你考虑过ProcessBuilder吗?
  • 我相信 ProcessBuilder 是我正在寻找的。我搜索了如何使用 ProcessBuilder,但找不到在 .exe 文件上执行此操作的方法。

标签: java process operating-system fork


【解决方案1】:

我建议您更喜欢 ProcessBuilder 而不是 Runtime.exec。另外,如果我理解您的问题,那么您可以将 exe 文件的完整路径传递给您的ProcessBuilder。类似的,

ProcessBuilder pb = new ProcessBuilder("C:\\Windows\\system32\\calc.exe");
pb.inheritIO(); // <-- passes IO from forked process.
try {
    Process p = pb.start(); // <-- forkAndExec on Unix
    p.waitFor(); // <-- waits for the forked process to complete.
} catch (Exception e) {
    e.printStackTrace();
}

【讨论】:

    猜你喜欢
    • 2012-04-19
    • 2012-02-27
    • 1970-01-01
    • 2015-01-26
    • 2015-02-03
    • 1970-01-01
    • 2017-05-03
    • 2021-05-31
    • 1970-01-01
    相关资源
    最近更新 更多