标签: java linux fork daemon
我需要双分割vmware,因此它不会继承终端ID(TTY / pts)。
这是我到目前为止所做的,但我无法访问runtime.exec进程来分叉另一个进程(删除终端ID)。
runtime.exec
Runtime runtime = Runtime.getRuntime(); Process proc = runtime.exec("vmware");
有没有办法在Java中“daemonize”?
答案 0 :(得分:4)
你需要编写一个小的C或C ++程序来做额外的fork,setsid,所有这些。
答案 1 :(得分:1)
为了让您的生活更轻松,您实际上需要通过关闭隐式连接到当前终端的输入/输出流来断开应用程序与shell的连接。
为了让自己更简单,请查看akuma项目。这将是普通Java中更简洁的解决方案,无需任何C包装器。
以下是blog post讨论它。
答案 2 :(得分:1)
为了做到这一点,你实际上并不需要“双叉”,只需要一个叉子。然后孩子应该关闭stdin,out,error并开始一个新的会话。