Запустится ли отложенное Restore (), если вы ctrl- c вне приложения? - PullRequest
1 голос
/ 05 августа 2020

В Go у вас есть что-то вроде:

func main() {
 defer func() {
        if r := recover(); r != nil {
            /*run some clean up code here...*/
            fmt.Println("Recovered")
        }
    }()

 /*Some code right here like a web server that runs until panic or ctrl-c'd out */

}

Если я ctrl- C в Linux, запустится ли отсрочка? Или сразу выходит? Если он сразу выходит, есть ли способ обойти это? Способ запустить код, несмотря ни на что, при выходе из приложения?

1 Ответ

4 голосов
/ 05 августа 2020

Ctrl- C или другой сигнал завершит программу без вызова отложенных функций. Вы можете поймать ctrl- c с помощью обработчика сигналов. Прочтите документацию к пакету os / signal, он имеет поведение c, специфичное для ОС. Что-то вроде ниже поймало бы ctrl- c:

    c := make(chan os.Signal, 1)
    signal.Notify(c,os.Interrupt)
    go func() {
        s := <-c
        // signal caught, cleanup
    }()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...