如何Ctrl+C一键kill 掉当前go运行的所有进程?

karl_zhao · 2021-11-19 16:15:51 · 1370 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2021-11-19 16:15:51 的主题,其中的信息可能已经有所发展或是发生改变。

最近遇到一个问题,请大佬们指点一下!

在linux系统用go做了一个小工具,go里面调用了10个不同级别的用C++编写的网络数据处理工具,go在运行之后,想通过Ctrl+C把程序停掉,但是实际运行中有如下问题: Ctrl+C之后,go程序停止了,但是里面通过os.exec调用执行的C++可执行文件仍然在运行。结果只能通过kill ID的方式一个个kill掉。

请问,Go有没有一种方式在Ctrl+C之后把所有的运行文件都kill掉呢?

先谢谢了!


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1370 次点击  
加入收藏 微博
3 回复  |  直到 2021-12-15 16:52:30
liangmanlin
liangmanlin · #1 · 3年之前

捕获推出信号,然后你想做啥就做啥

criyle
criyle · #2 · 3年之前

创建 os/exec.Cmd 的时候给 SysProcAttr 字段的 Pdeathsig 赋值 SIGKILL

karl_zhao
karl_zhao · #3 · 3年之前

@criyle 非常感谢!

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传