在执行结束时执行操作

我有一个http服务器(使用启动http.Handle),我想做一些操作。

我该怎么做(在Linux上)?在ctrl-C的情况下可以进行那些操作吗?

我对Unix信号不熟悉,因此答案可能很简单。


温温酱
浏览 229回答 3
3回答

jeck猫

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

凤凰求蛊

使用kostix答案,我构建了以下代码(现已适用于Go1)以捕获中断信号并在退出之前进行一些操作:go func() {&nbsp; &nbsp; sigchan := make(chan os.Signal)&nbsp; &nbsp; signal.Notify(sigchan, os.Interrupt)&nbsp; &nbsp; <-sigchan&nbsp; &nbsp; log.Println("Program killed !")&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; // do last actions and wait for all write operations to end&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; os.Exit(0)}()// start main program tasks
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go