1

我正在使用Runtime.getRuntime().exec(cmd)启动 PostgreSQL 服务器。使用上述命令启动服务器时,我看到正在创建一个新进程来启动进程之外的Runtime.getRuntime().exec()进程。

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();

我猜它没有设置为预期的过程,所以服务器没有启动。如何将参数传递给最近创建的进程?或者有没有其他方法可以让它工作?

4

1 回答 1

2

您所做的不是传递参数,而是写入进程 STDIN。

要将参数传递给进程,请使用Runtime.getRuntime().exec(String[] command); 数组的第一个位置是命令,其余的是参数。

于 2013-02-04T14:20:48.133 回答