|
@@ -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) {
|