LingxinMeng 9 månader sedan
förälder
incheckning
44bea00ac8
1 ändrade filer med 13 tillägg och 16 borttagningar
  1. 13 16
      aarch64/pjibot_guide/common/service/rosbag_record.go

+ 13 - 16
aarch64/pjibot_guide/common/service/rosbag_record.go

@@ -83,14 +83,7 @@ func BagRecord(nodeName string) {
 			select {
 			case signal := <-ChannelKillRosRecord:
 				if signal == 1 {
-					if err = util.KillProcessByPid(recordSubProcessPid); err != nil {
-						c_log.GlobalLogger.Errorf("程序阻塞,杀死record命令子进程出错,【pid】=%v,【err】=%v。", recordSubProcessPid, err)
-						select {} // 此处阻塞防止record命令一直录包占满存储
-					}
-					if err = cmd.Process.Kill(); err != nil {
-						c_log.GlobalLogger.Error("程序阻塞,杀死record命令进程", recordProcessPid, "出错:", err)
-						select {} // 此处阻塞防止record命令一直录包占满存储
-					}
+					kill(recordProcessPid, recordSubProcessPid, cmd)
 					AddKillTimes("1")
 					continue // continue 是为了等待重启信号
 				}
@@ -99,14 +92,7 @@ func BagRecord(nodeName string) {
 				}
 				if signal == 3 { // 这个关闭是等待数据处理时的关闭
 					c_log.GlobalLogger.Error("采集数据,接收record命令进程关闭信号:", signal)
-					if err = util.KillProcessByPid(recordSubProcessPid); err != nil {
-						c_log.GlobalLogger.Errorf("程序阻塞,杀死record命令子进程出错,【pid】=%v,【err】=%v。", recordSubProcessPid, err)
-						select {} // 此处阻塞防止record命令一直录包占满存储
-					}
-					if err = cmd.Process.Kill(); err != nil {
-						c_log.GlobalLogger.Error("程序阻塞,杀死record命令进程", recordProcessPid, "出错:", err)
-						select {} // 此处阻塞防止record命令一直录包占满存储
-					}
+					kill(recordProcessPid, recordSubProcessPid, cmd)
 					continue
 				}
 			}
@@ -114,6 +100,17 @@ func BagRecord(nodeName string) {
 	}
 }
 
+func kill(recordProcessPid int, recordSubProcessPid int, cmd *exec.Cmd) {
+	if err := util.KillProcessByPid(recordSubProcessPid); err != nil {
+		c_log.GlobalLogger.Errorf("程序阻塞,杀死record命令子进程出错,【pid】=%v,【err】=%v。", recordSubProcessPid, err)
+		select {} // 此处阻塞防止record命令一直录包占满存储
+	}
+	if err := cmd.Process.Kill(); err != nil {
+		c_log.GlobalLogger.Error("程序阻塞,杀死record命令进程", recordProcessPid, "出错:", err)
+		select {} // 此处阻塞防止record命令一直录包占满存储
+	}
+}
+
 func isCanRecord(n *goroslib.Node) bool {
 	time.Sleep(time.Duration(1) * time.Second)
 	// 获取