工具类
package cmd
import (
"bufio"
"logger"
"fmt"
"io"
"os/exec"
"sync"
"syscall"
)
type Command struct {
CmdStr string
Pid int
ExitCode int
StdOutput string
ErrOutput string
isPrintRealTime bool
}
var log = logger.GetLogger()
const (
ExitCodeDefault = -999
ExitCodeIoError = -998
ExitCodeStartError = -997
)
/**
创建命令执行实例
*/
func NewCmd(cmdStr string) *Command {
return &Command{
CmdStr: cmdStr,
ExitCode: ExitCodeDefault,
isPrintRealTime: false,
}
}
/**
创建命令执行实例,并且实时打印输出
*/
func NewCmdWithPrint(cmdStr string) *Command {
return &Command{
CmdStr: cmdStr,
ExitCode: ExitCodeDefault,
isPrintRealTime: true,
}
}
/**
执行命令
*/
func (cmd *Command) Start() {
wg := &sync.WaitGroup{}
wg.Add(2)
cmdExec := exec.Command("sh", "-c", cmd