2012-01-27 156 views
0

是否可以從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

回答

1

你的命令和路徑可能不正確地處理挑剔。 這裏是需要假爪哇(常規),以完成將一個鮮運行的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 

安裝您可以直接在常規控制檯輸入上述內容。