我正在使用Runtime.getRuntime().exec(cmd)
來啓動PostgreSQL服務器。當使用上述命令啓動服務器時,我看到除了Runtime.getRuntime().exec()
進程之外,正在創建新進程以啓動進程。Java將參數傳遞給子進程
john 14330 0.0 0.0 128244 2568 pts/88 S+ 19:35 0:00 pg_ctl -D /u/john/postgre_test/data/ start -w
john 14334 9.5 0.0 124592 3736 pts/88 S+ 19:35 0:00 /usr/bin/postgres -D /u/john/postgre_test/data
正如您所看到的,第一個是由於exec()方法創建的,而第二個也是創建的。現在,因爲服務器需要傳遞SSL私鑰密碼。如果我通過它使用
PrintStream ps = new PrintStream(process.getOutputStream());
ps.println(keyPassword);
ps.flush();
我想這不是設置爲預期的過程,所以服務器沒有開始。我如何將參數傳遞給最近創建的進程?還是有其他方法可以使它工作嗎?請幫助我。任何幫助或建議將非常感激。
so process是Runtime.getRuntime()。exec(cmd)返回的對象? –
當您創建進程時,可能會有命令行參數構建到字符串的末尾。你將如何編寫一個'單行'從控制檯提示符啓動服務器? – DomV