使用系统调用来守护进程当前不可能可靠地执行,这就是为什么你的守护进程不可能被杀死的原因:它已被楔入(虽然我应该承认,为什么它没有因为发送而死SIGKILL而变得很奇怪内核只是破坏了进程,没有尝试信号传递).
为了正确地守护Go过程,建议使用包装器进程(例如daemon)或在init超级服务器的高级替代品下运行它,systemd或者upstart或者作为独立的主管(例如runit,monit和其他人) - 在这种情况下,该过程没有脑卒中要求是一个真正的Unix守护进程,并且可能表现得像一个正常的进程:不执行双fork+ setsid技巧,不干扰PID文件管理,能够写入其常规I/O流等.