如何在Golang中创建一个守护进程?

24

有没有人在Golang中编写过守护进程?你能为我讲解一下如何实现吗?欢迎提供有用的链接。


这不是类似于https://dev59.com/NGkw5IYBdhLWcg3wMHum吗? - VonC
我查看了那个链接。其中描述的解决方案是关于将普通的Go程序变成守护进程。我正在寻找如何fork或setsuid等操作。 - Kasinath Kottukkal
那么你将不得不编辑你的问题并添加很多关于该问题具体细节的详细信息。 - VonC
1
我认为这足以关闭为重复。链接的问题确实包含一个答案(其中有一个指向错误的链接),描述了分叉/设置UID等必要的困难,以使go程序成为守护进程。 - Paul Hankin
1个回答

23

是的,这已经实现了。请参考go-daemon项目。请注意,在启动goroutine之后执行守护进程时会出现某些问题,请参见issue 227了解详情。

目前我建议使用操作系统提供的工具。有关解决方案,请参见此相关问题


3
对于使用systemd的系统,这绝对不是必要的。对于BSD和旧版upstart(如c5、c6),你可以使用像https://github.com/fiorix/go-daemon这样的小程序而无需更改你的Go代码。 - fiorix
从 https://immortal.run https://github.com/immortal/immortal/blob/master/fork.go - nbari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接