0

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

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

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

这也是在 OS X 10.5 上,我知道 ProcessBuilder 在整个操作系统中都很挑剔

4

1 回答 1

1

您的命令和路径可能没有正确处理。这是在使用brew全新安装后在伪 java (groovy) 中运行 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 控制台中键入以上内容。

于 2012-01-27T02:26:59.757 回答