代码之家  ›  专栏  ›  技术社区  ›  Robert Greiner

有可能在Java中叉一个进程吗?

  •  3
  • Robert Greiner  · 技术社区  · 15 年前

    我需要双叉vmware,这样它就不会继承终端ID(tty/pts)。

    这是我目前所拥有的,但我无法访问 runtime.exec 进程派生另一个进程(这将删除终端ID)。

    Runtime runtime = Runtime.getRuntime();
    Process proc = runtime.exec("vmware");
    

    在Java中有没有“后台化”的方法?

    3 回复  |  直到 15 年前
        1
  •  4
  •   bmargulies    15 年前

    你需要写一个小的C或C++程序来做额外的叉,SETID,所有这些东西。

        2
  •  1
  •   gpampara    15 年前

    为了使您的生活更轻松,您基本上需要通过关闭隐式连接到当前终端的输入/输出流来断开应用程序与shell的连接。

    为了让自己更简单,请看一下 akuma 项目。这将是一个更干净的解决方案在平原Java,而不需要任何C包装。

    这里是一个 blog post 讨论一下。

        3
  •  1
  •   MarkR    15 年前

    实际上,您不需要“双叉”就可以做到这一点,只需要一个单叉。然后,子进程应该关闭stdin、out、error并启动一个新的会话。

    推荐文章