登录
首页 >  Golang >  Go问答

确保外部进程在退出后继续运行

来源:stackoverflow

时间:2024-03-07 15:09:26 454浏览 收藏

从现在开始,努力学习吧!本文《确保外部进程在退出后继续运行》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

如何在主退出后保持进程继续运行?

更新:事实证明只有当你在goland运行时才会出现这种情况。接受的答案(包括评论)解决了这个问题。

信息:我有一个可执行文件来监视文件夹的更改,我需要从 go 启动它并在退出后保持它运行。

我已经看到了这个,但它并没有解决退出后运行进程的问题。

package main

import "os/exec"

func main() {
    cmd := exec.Command("sh", "long_running process", "&")
    cmd.Start()
}
fmt.Println("Sleeping...")
time.Sleep(8 * time.Second) // I can see the process running

之后,当我执行“ps”时,主应用程序会终止该进程。


解决方案


我无法重现您遇到的问题。当我运行 sleep 命令并且 goroutine 终止时,当我使用 ps 搜索它时它仍在运行

更新

  1. 无法在 goland 中使用调试器运行它。
  2. 例外,如果您在调试选项窗口中启用以 sudo 身份运行。
  3. 不使用 sudo:使用 go run,或使用 dlv debuggoland 中的调试器。
package main

import (
    "os/exec"
)

func main() {
    cmd := exec.command("sleep", "99999999")
    cmd.start()
}
~/tempgo/process
▶ go run process.go

~/tempgo/process
▶ ps -ax | grep "sleep"
29907 ttys002    0:00.00 sleep 99999999
29925 ttys002    0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox sleep

~/tempgo/process

今天关于《确保外部进程在退出后继续运行》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>