Files
monibuca/plugin/transcode/pkg/cmd.go
2024-10-08 20:32:55 +08:00

47 lines
1.1 KiB
Go

package transcode
import (
"m7s.live/m7s/v5/pkg/task"
"os"
"os/exec"
)
type CommandTask struct {
task.Task
logFileName string
logFile *os.File
Cmd *exec.Cmd
}
func (ct *CommandTask) Start() (err error) {
ct.SetDescription("cmd", ct.Cmd.String())
if ct.logFileName != "" {
ct.SetDescription("log", ct.logFileName)
ct.logFile, err = os.OpenFile(ct.logFileName, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
ct.Error("Could not create transcode log", "err", err)
return err
}
// 将命令的标准输出和标准错误输出重定向到日志文件
ct.Cmd.Stdout = ct.logFile
ct.Cmd.Stderr = ct.logFile
} else {
// 将命令的标准输出和标准错误输出重定向到操作系统的标准输出和标准错误输出
ct.Cmd.Stdout = os.Stdout
ct.Cmd.Stderr = os.Stderr
}
ct.Info("start exec", "cmd", ct.Cmd.String())
err = ct.Cmd.Start()
ct.SetDescription("pid", ct.Cmd.Process.Pid)
return
}
func (ct *CommandTask) Dispose() {
err := ct.Cmd.Process.Kill()
ct.Info("kill", "err", err)
if ct.logFile != nil {
_ = ct.logFile.Close()
}
}