+-
linux-如何正确启动将使用Go进行守护进程的进程?
我编写了Go程序,它将运行另一个守护程序.

我想知道第一个程序在其子进程守护之前必须等待多少时间.

cmd := exec.Command(path1)
cmd.Start()
    // exit here

要么

cmd := exec.Command(path1)
cmd.Run()
    // exit here

要么

cmd := exec.Command(path1)
cmd.Start()
time.Sleep(5 * time.Second)
    // exit here

如果使用cmd.Run(),则启动的守护程序中的命令/操作将在第一个程序中“等待”结束.

最佳答案
守护进程是 just a fancy way of forking the process.这意味着您启动的进程将在守护进程启动后立即退出.因此,您要使用Run,它将等待启动的进程返回(成功的派生).

Process A:
|
|`-- run(B)
|    Process B:
|    |
|    |`-- daemonize(C)
|    |
|     `-- exit
|
 `-- daemonizing done

如果要等待守护程序的状态,最可靠的方法是由守护程序发出信号.例如,使用套接字,文件或共享内存.

点击查看更多相关文章

转载注明原文:linux-如何正确启动将使用Go进行守护进程的进程? - 乐贴网