package util

import (
	"cicv-data-closedloop/pji/common/log"
	"os/exec"
)

func GetSubProcessPid(pid string) (string, error) {
	pgrepCmd := exec.Command("pgrep", "-P", pid)
	output, err := pgrepCmd.CombinedOutput()
	if err != nil {
		return "", err
	}
	return string(output), nil
}

func ExecuteWithPath(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 Execute(name string, arg ...string) (*exec.Cmd, string, error) {
	cmd := exec.Command(name, arg...)
	combinedOutput, err := cmd.CombinedOutput()
	if err != nil {
		log.GlobalLogger.Info("命令", name, " ", arg, "执行出错:", err)
		return nil, "", err
	}
	return cmd, string(combinedOutput), nil
}

func KillProcessByPID(pid string) error {
	cmd := exec.Command("kill", "-9", pid)
	err := cmd.Run()
	if err != nil {
		return err
	}
	return nil
}