从Java启动守护进程

时间:2012-01-27 01:40:33

标签: java processbuilder

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

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

如果我在启动过程后设置断点,则hasExisted布尔值始终为true,退出代码为0且无法连接。

这也是在OS X 10.5上,我知道ProcessBuilder在操作系统上非常挑剔

1 个答案:

答案 0 :(得分:1)

您的命令和路径可能无法正常处理。 以下是需要在伪java(groovy)中使用brew进行全新安装后运行mongodb的内容

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

您可以直接在groovy控制台中键入以上内容。