为了账号安全,请及时绑定邮箱和手机立即绑定

在执行结束时执行操作

在执行结束时执行操作

Go
温温酱 2021-04-30 10:11:45
我有一个http服务器(使用启动http.Handle),我想做一些操作。我该怎么做(在Linux上)?在ctrl-C的情况下可以进行那些操作吗?我对Unix信号不熟悉,因此答案可能很简单。
查看完整描述

3 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

您可以使用信号包订购TERM和INT信号。但是请注意,只有在明确终止进程时才发送这些信号。正常退出(由流程本身启动)不涉及任何信号。我认为对于正常退出,只需在主例程中执行某些操作即可(应该应该生成工作流程,然后等待它们)。

阅读man 7 signal有关POSIX信号的更多常规信息。


查看完整回答
反对 回复 2021-05-10
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

使用kostix答案,我构建了以下代码(现已适用于Go1)以捕获中断信号并在退出之前进行一些操作:


go func() {

    sigchan := make(chan os.Signal)

    signal.Notify(sigchan, os.Interrupt)

    <-sigchan

    log.Println("Program killed !")

    

    // do last actions and wait for all write operations to end

    

    os.Exit(0)

}()


// start main program tasks


查看完整回答
反对 回复 2021-05-10
  • 3 回答
  • 0 关注
  • 228 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信