+-

我编写了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进行守护进程的进程? - 乐贴网