go二进制文件是否有可能重新加载自己



我正在使用go-update(https://github.com/inconshreveable/go-update)来更新我分发给用户的Go二进制文件。现在,当正在运行的go程序检测到新版本时,它会向用户发送一条消息,要求他们退出并重新启动程序。

正在运行的 go 程序是否可以从新的二进制文件重新加载自身?

这是在go-update问题跟踪器中提出的,但没有答案:https://github.com/inconshreveable/go-update/issues/5

是的,可以使用保存当前进程的可执行文件名称的os.Args,以及可以启动和分叉进程的os.exec包。一个很好的例子是在 goagain 包中完成的,它支持零停机时间重启。事实上,你可能只是使用它。

请参阅 https://github.com/rcrowley/goagain

更具体地说,在此文件中:https://github.com/rcrowley/goagain/blob/master/goagain.go#L77

最新更新