退出后保留外部进程 运行

keep external process running after exit

如何在主退出后保留进程 运行?

更新: 原来只有你在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

搜索它时它仍然是 运行ning

更新

  1. 不起作用运行使用 GoLand 中的调试器进行调试。
  2. Except 如果您在调试选项 window.
  3. 中启用 运行 作为 sudo
  4. 没有 sudo:使用 go run,或者使用 dlv debug,没有 GoLand 中的调试器。
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