javaのpg_dumpを使用して自分のデータベースのバックアップを作成します。バックアップの作成はうまくいきますが、プログラムが終了する前に開始されません。ProcessBuilder経由でpostgresqlのバックアップを作成します。
バックアップをすぐに開始する方法はありますか?
public static void backupDb() throws IOException, InterruptedException {
String path = "C:\\HACENE\\test.backup";
Runtime r = Runtime.getRuntime();
//PostgreSQL variables
String host = "localhost";
String user = "postgres";
String dbase = "gtr_bd";
String password = "postgres";
Process p;
ProcessBuilder pb;
r = Runtime.getRuntime();
pb = new ProcessBuilder("C:\\Program Files\\PostgreSQL\\9.3\\bin\\pg_dump", "-v", "-h", host, "-f", path, "-U", user, dbase);
pb.environment().put("PGPASSWORD", password);
pb.redirectErrorStream(true);
p = pb.start();
System.out.println("end of backup");
}
'p.waitFor()'おそらく? – CollinD
動作はOS環境によって異なります。プロセスの実行はJava自体では行われません。したがって、定義して実行するために渡したプロセスを実際に実行するのは、OSによって異なります。また、プログラムのexit_(ミリ秒、秒、時間)の前にはどれくらいの時間がありますか? – rpy
プロセスはosによって処理されるので、論理的にはアプリケーションから起動する必要がありますが、プログラムを終了するとプロセスが正確に開始されます –