孟令鑫 1 år sedan
förälder
incheckning
31ecf9f43a
1 ändrade filer med 30 tillägg och 14 borttagningar
  1. 30 14
      common/util/u_exec.go

+ 30 - 14
common/util/u_exec.go

@@ -37,25 +37,41 @@ func ExecuteWithPath(path string, name string, arg ...string) (*exec.Cmd, error)
 	}
 }
 
-func ExecuteWithDirAsync(path string, name string, arg ...string) (*exec.Cmd, error) {
+func ExecuteWithDirAsync(dir string, name string, arg ...string) (*exec.Cmd, error) {
 	// 创建一个Cmd对象,表示要执行的命令
 	cmd := exec.Command(name, arg...)
 	// 指定目录
-	cmd.Dir = path
-	err := cmd.Start()
+	cmd.Dir = dir
+	go func() {
+		_, output, err := ExecuteWithDirSync(dir, name, arg...)
+		if err != nil {
+			fmt.Println("Error waiting for command,【output】=", output, ",【err】=", err)
+		}
+	}()
+	return cmd, nil
+}
+
+//func ExecuteWithDirAsync(dir string, name string, arg ...string) (*exec.Cmd, error) {
+//	// 创建一个Cmd对象,表示要执行的命令
+//	cmd := exec.Command(name, arg...)
+//	// 指定目录
+//	cmd.Dir = dir
+//	err := cmd.Start()
+//	if err != nil {
+//		return nil, err
+//	} else {
+//		return cmd, nil
+//	}
+//}
+
+func ExecuteWithDirSync(dir string, name string, arg ...string) (*exec.Cmd, string, error) {
+	cmd := exec.Command(name, arg...)
+	cmd.Dir = dir
+	combinedOutput, err := cmd.CombinedOutput()
 	if err != nil {
-		return nil, err
-	} else {
-		// 另外启动一个线程输出等待过程中的错误信息
-		go func(cmd *exec.Cmd) {
-			err = cmd.Wait()
-			if err != nil {
-				fmt.Println("Error waiting for command:", err)
-				return
-			}
-		}(cmd)
-		return cmd, nil
+		return nil, "", err
 	}
+	return cmd, string(combinedOutput), nil
 }
 
 func ExecuteWithEnvAndDirAsync(envs []string, dir string, name string, arg ...string) (*exec.Cmd, error) {