任务执行底层原理
通过Command类执行任务
- 执行简单命令
var(
cmd *exec.Cmd
err error
)
cmd=exec.Command("E:\\cygwin\\bin\\bash.exe","-c","ls -l")
if err=cmd.Run();err!=nil{
fmt.Println(err)
}
- 捕获执行命令后的输出
var(
cmd *exec.Cmd
output []byte
err error
)
cmd=exec.Command("E:\\cygwin\\bin\\bash.exe","-c","echo hezb")
if output,err=cmd.CombinedOutput();err!=nil{
fmt.Println(err)
return
}
fmt.Println(string(output))
运行结果
3. 停止执行命令
type result struct {
output []byte
err error
}
func main(){
var(
cmd *exec.Cmd
ctx context.Context
cancelFunc context.CancelFunc
resultChan chan *result
res *result
)
resultChan=make(chan *result,1000)
ctx,cancelFunc=context.WithCancel(context.TODO())
go func() {
var(
output []byte
err error
)
cmd=exec.CommandContext(ctx,"E:\\cygwin\\bin\\bash.exe","-c","sleep 2;echo hezb;")
output,err=cmd.CombinedOutput()
resultChan<-&result{
err:err,
output:output,
}
}()
time.Sleep(1*time.Second)
cancelFunc()
res=<-resultChan
fmt.Println(res.err,string(res.output))
}