// exec基础使用

import (
"os/exec"
) cmd = exec.Command("C:\\cygwin64\\bin\\bash.exe", "-c", "echo 1")
err = cmd.Run()
// 捕获输出

cmd = exec.Command("C:\\cygwin64\\bin\\bash.exe", "-c", "/usr/bin/python xxx.py")
output, err = cmd.CombinedOutput() // 执行了命令, 捕获了子进程的输出(pipe)
fmt.Println(string(output))
// 1s超时后,kill程序(强制终止/超时终止)

func main() {
// 执行1个cmd, 让它在一个协程里去执行, 让它执行2秒: sleep 2; echo hello;
// 1秒的时候, 我们杀死cmd
var (
ctx context.Context
cancelFunc context.CancelFunc
cmd *exec.Cmd
resultChan chan *result
res *result
) // 创建了一个结果队列
resultChan = make(chan *result, 1000) // context: chan byte
// cancelFunc: close(chan byte) ctx, cancelFunc = context.WithCancel(context.TODO()) go func() {
var (
output []byte
err error
)
cmd = exec.CommandContext(ctx, "bash", "-c", "sleep 2;echo hello;") // 执行任务, 捕获输出
output, err = cmd.CombinedOutput() // 把任务输出结果, 传给main协程
resultChan <- &result{
err: err,
output: output,
}
}() // 继续往下走
time.Sleep(1 * time.Second) // 取消上下文
cancelFunc() // 在main协程里, 等待子协程的退出,并打印任务执行结果
res = <- resultChan // 打印任务执行结果
fmt.Println(res.err, string(res.output))
}

最新文章

  1. Spring笔记--xml配置文件详解
  2. [转]搬瓦工换机房换ip之后不能连外网
  3. (转)C语言_测试程序运行内存状态GlobalMemoryStatus使用案例
  4. SQL Server 2008下日志清理方法
  5. Asp.Net构架(Http请求处理流程)、Asp.Net 构架(Http Handler 介绍)、Asp.Net 构架(HttpModule 介绍)
  6. RSA算法记录----摘抄
  7. WebApi2 文件图片上传下载
  8. 书写规范的javaScript
  9. NanUI文档 - 使用网页来设计整个窗口
  10. Javascript高级编程学习笔记(91)—— Canvas(8) 阴影
  11. myql 格式化日期
  12. C#获取当月第一天和最后一天
  13. [Aaronyang] 写给自己的WPF4.5 笔记13[二维自定义控件技巧-可视化状态实战,自定义容器,注册类命令,用户控件补充]
  14. 4、My Scripts
  15. rabbitMQ教程(四) spring整合rabbitMQ代码实例
  16. IDEA导出jar包后运行报错 找不到或无法加载主类
  17. Using LACP with a vSphere Distributed Switch 5.1
  18. Criteria查询
  19. 不大于N的所有素数
  20. mvn pom

热门文章

  1. ASE19团队项目alpha阶段model组 scrum11 记录
  2. Image Processing and Computer Vision_Review:Local Invariant Feature Detectors: A Survey——2007.11
  3. 【Day4】1.JsonPath使用案例
  4. DOS导出文件夹或文件名
  5. windows下如何打开.sketch的文件
  6. mac系统 flutter从安装到第一个应用
  7. c语言第一次作业1
  8. HDU 6088 - Rikka with Rock-paper-scissors | 2017 Multi-University Training Contest 5
  9. react-native-page-scrollview 的使用方法(实现酷炫的分页轮播效果,还支持自定义View)
  10. MySQL多表查询总结