Go 终止后的子进程清理

Go 终止后的子进程清理,go,Go,我想运行另一个binary from go应用程序,其内容如下: cmd := exec.Command("another_app_binary", "-config", "config.conf") cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr cmd.Run() 当我杀死父进程(上面的代码)时,子进程(另一个应用程序二进制)变成孤立进程。在父进程退出/终止后,我必须使用哪些选项来清理子进程?由于我计划在win/linux上运行它,所以它必须有点

我想运行另一个binary from go应用程序,其内容如下:

cmd := exec.Command("another_app_binary", "-config", "config.conf")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Run()
当我杀死父进程(上面的代码)时,子进程(另一个应用程序二进制)变成孤立进程。在父进程退出/终止后,我必须使用哪些选项来清理子进程?由于我计划在win/linux上运行它,所以它必须有点平台性。

您可以使用该软件包来侦听当前进程中的kill信号

import (
    "os/exec"
    "os"
    "os/signal"
)

// ...

cmd := exec.Command("another_app_binary", "-config", "config.conf")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Run()

c := make(chan os.Signal, 2)
signal.Notify(c, os.Interrupt, os.Kill)
go func() {
    <-c
    // cleanup
    cmd.Process.Kill()
    os.Exit(1)
}()

// ...
导入(
“os/exec”
“操作系统”
“操作系统/信号”
)
// ...
cmd:=exec.Command(“另一个应用程序”、“-config”、“config.conf”)
cmd.Stdout=os.Stdout
cmd.Stderr=os.Stderr
cmd.Run()
c:=制造(转换操作信号,2)
信号通知(c,操作系统中断,操作系统终止)
go func(){

cmd.Process.Kill()
父进程和子进程如何连接到你的应用程序/另一个\u应用程序\u二进制文件?哪一个是哪个?你是在谈论杀死另一个\u应用程序\u二进制文件的子进程吗?请在问题中提供更多信息。谢谢,更新了问题。