孟令鑫 hai 1 ano
pai
achega
945601f6a9
Modificáronse 2 ficheiros con 27 adicións e 2 borrados
  1. 26 0
      common/util/u_exec.go
  2. 1 2
      pji/common/svc/rosbag_record.go

+ 26 - 0
common/util/u_exec.go

@@ -36,6 +36,20 @@ func ExecuteWithPath(path string, name string, arg ...string) (*exec.Cmd, error)
 	}
 }
 
+func ExecuteWithDirAsync(path string, name string, arg ...string) (*exec.Cmd, error) {
+	// 创建一个Cmd对象,表示要执行的命令
+	cmd := exec.Command(name, arg...)
+	// 指定目录
+	cmd.Dir = path
+	err := cmd.Start()
+	if err != nil {
+		return nil, err
+	} else {
+		// 执行命令并等待它完成d
+		return cmd, nil
+	}
+}
+
 func ExecuteWithEnvAndDirAsync(envs []string, dir string, name string, arg ...string) (*exec.Cmd, error) {
 	cmd := exec.Command(name, arg...)
 	cmd.Dir = dir
@@ -70,8 +84,20 @@ func Execute(name string, arg ...string) (*exec.Cmd, string, error) {
 	return cmd, string(combinedOutput), nil
 }
 
+func ExecuteSync(name string, arg ...string) (*exec.Cmd, string, error) {
+	cmd := exec.Command(name, arg...)
+	combinedOutput, err := cmd.CombinedOutput()
+	if err != nil {
+		return nil, "", err
+	}
+	return cmd, string(combinedOutput), nil
+}
+
 func ExecuteWithEnvSync(envs []string, name string, arg ...string) (*exec.Cmd, string, error) {
 	cmd := exec.Command(name, arg...)
+	for _, env := range envs {
+		cmd.Env = append(cmd.Env, env)
+	}
 	combinedOutput, err := cmd.CombinedOutput()
 	if err != nil {
 		return nil, "", err

+ 1 - 2
pji/common/svc/rosbag_record.go

@@ -6,7 +6,6 @@ import (
 	"cicv-data-closedloop/pji/common/cfg"
 	"cicv-data-closedloop/pji/common/cutil"
 	"github.com/bluenviron/goroslib/v2"
-	"os"
 	"time"
 )
 
@@ -38,7 +37,7 @@ func BagRecord(nodeName string) {
 		// 不在此处压缩,因为 rosbag filter 时会报错。在上传到oss之前压缩即可。
 		// 包名格式:2023-11-15-17-35-20_0.bag
 		cutil.CreateParentDir(cfg.CloudConfig.BagDataDir)
-		cmd, err := util.ExecuteWithEnvAndDirAsync(os.Environ(), cfg.CloudConfig.BagDataDir, "rosbag", command...)
+		cmd, err := util.ExecuteWithDirAsync(cfg.CloudConfig.BagDataDir, "/opt/ros/melodic/bin/rosbag", command...)
 		if err != nil {
 			c_log.GlobalLogger.Error("执行record命令", command, "出错:", err)
 			continue