从Java启动守护进程

问题描述:

是否可以从java启动守护进程?具体来说,我试图在java中使用MongoDB,但是我希望我的应用程序能够启动mongod守护程序(如果它尚未运行)。我似乎能够启动它,exitcode是0.但它总是立即退出。是否有可能强制它保持运行,然后用proc.destroy()退出它?从Java启动守护进程

ProcessBuilder pb = new ProcessBuilder("./bin/mongod","--dbpath data/db"); Process proc = pb.start();

如果我设置一个断点后,我开始的过程中hasExisted布尔总是真,退出码为0,我无法连接到。

而且这是在OS X 10.5,我知道的ProcessBuilder是跨OS

+0

'./mongod --dbpath data/db'在守护进程模式下不启动mongodb。你必须使用'./mongod --fork --dbpath data/db --logpath /var/log/mongodb.log --logappend'作为守护进程启动它。如果不是作为守护进程启动的,则必须自己处理stdin/stdout/stderr,以使用'ProcessBuilder.start'开始的进程 – Raihan 2012-01-27 02:25:33

你的命令和路径可能不正确地处理挑剔。 这里是需要假爪哇(常规),以完成将一个鲜运行的MongoDB与brew

ProcessBuilder pb = new ProcessBuilder(["/usr/local/bin/mongod","run", "--config", "/usr/local/Cellar/mongodb/2.0.1-x86_64/mongod.conf"]); 

Process process = pb.start() 

InputStream is = process.getInputStream(); 
InputStreamReader isr = new InputStreamReader(is); 
BufferedReader br = new BufferedReader(isr); 
String line; 
while ((line = br.readLine()) != null) { 
     System.out.println(line); 
} 


int exitValue = process.waitFor() 
print exitValue 

安装您可以直接在常规控制台输入上述内容。