go - golang程序退出后如何保持子进程运行?

标签 go subprocess

我注意到使用 Start() 创建的子进程将在程序退出后终止,例如:

package main

import "os/exec"

func main() {
    cmd := exec.Command("sh", "test.sh")
    cmd.Start()
}

main()退出时,test.sh会停止运行

最佳答案

子进程应该在你的进程结束后继续运行,只要它干净地结束,如果你点击 ^C 就不会发生这种情况。 您可以做的是拦截发送到您的进程的信号,这样您就可以干净利落地结束。

sigchan := make(chan os.Signal, 1)
signal.Notify(sigchan,
    syscall.SIGINT,
    syscall.SIGKILL,
    syscall.SIGTERM,
    syscall.SIGQUIT)
go func() {
    s := <-sigchan
    // do anything you need to end program cleanly
}()

关于go - golang程序退出后如何保持子进程运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42471349/

相关文章:

go - 如何使用 redigo 将 map 保存和检索到 redis 中?

python - 在不创建僵尸进程的情况下停止 Flask 中的后台进程

python - 如何避免【Errno 12】使用子进程模块导致的Cannot allocate memory错误

mongodb - golang上的mongo随机记录

unix 的 golang jsonMarshal 时间戳

loops - 是否可以从外部功能停止股票行情/股票报价?

go - 如何管理子模块的版本?

python - 将 daemontools 与生成子进程的 Python 脚本一起使用

Python,subprocess,devenv,为什么没有输出?

Python 子进程 readline() 挂起;不能使用普通选项