golang执行shell命令,实时输出,支持kill

本文介绍了如何在Golang中执行shell命令,并实现命令执行过程中的实时输出,同时提供了如何在需要时kill相关进程的方法。
摘要由CSDN通过智能技术生成

工具类 

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值