From 627d9f9bbfe293544364ad385adb43302c57c132 Mon Sep 17 00:00:00 2001 From: Lin Sinan Date: Sun, 29 Dec 2019 01:15:57 +0100 Subject: [PATCH] java fork process --- src/main/java/com/github/hcsp/shell/Fork.java | 9 +++++++++ working-directory/output.txt | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/src/main/java/com/github/hcsp/shell/Fork.java b/src/main/java/com/github/hcsp/shell/Fork.java index 28e0700..7c18bcb 100644 --- a/src/main/java/com/github/hcsp/shell/Fork.java +++ b/src/main/java/com/github/hcsp/shell/Fork.java @@ -3,6 +3,7 @@ import java.io.File; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Map; public class Fork { public static void main(String[] args) throws Exception { @@ -10,8 +11,16 @@ public static void main(String[] args) throws Exception { // 工作目录是项目目录下的working-directory目录(可以用getWorkingDir()方法得到这个目录对应的File对象) // 传递的命令是sh run.sh // 环境变量是AAA=123 + ProcessBuilder pb = new ProcessBuilder("sh", "run.sh"); + pb.directory(getWorkingDir()); + Map envs = pb.environment(); + envs.put("AAA", "123"); + + pb.redirectOutput(getOutputFile()); + pb.start().waitFor(); } + private static File getWorkingDir() { Path projectDir = Paths.get(System.getProperty("user.dir")); return projectDir.resolve("working-directory").toFile(); diff --git a/working-directory/output.txt b/working-directory/output.txt index e69de29..f38c21d 100644 --- a/working-directory/output.txt +++ b/working-directory/output.txt @@ -0,0 +1,7 @@ +AAA is: 123 +total 17K +-rw-r--r-- 1 Linsinan Administrators 13 Dec 29 00:15 output.txt +drwxr-xr-x 9 Linsinan Administrators 4.0K Dec 29 00:14 .. +drwxr-xr-x 2 Linsinan Administrators 0 Dec 28 23:57 . +-rw-r--r-- 1 Linsinan Administrators 11K Dec 28 23:57 .hidden.txt +-rwxr-xr-x 1 Linsinan Administrators 50 Dec 28 23:57 run.sh