mirror of
https://github.com/langhuihui/monibuca.git
synced 2025-10-28 21:11:51 +08:00
48 lines
1.1 KiB
Go
48 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.Description = task.Description{
|
|
"cmd": ct.Cmd.String(),
|
|
}
|
|
if ct.logFileName != "" {
|
|
ct.Description["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.Description["pid"] = ct.Cmd.Process.Pid
|
|
return
|
|
}
|
|
|
|
func (ct *CommandTask) Dispose() {
|
|
_ = ct.Cmd.Process.Kill()
|
|
if ct.logFile != nil {
|
|
_ = ct.logFile.Close()
|
|
}
|
|
}
|