tl;dt https://github.com/nozo-moto/signal_kansitai
Nach ein wenig Recherche wollte ich wissen, welche Art von Signal an die Anwendung gesendet wurde
Die Go-Sprache kann wie folgt behandelt werden, wenn sich in der erstellten Goroutine ein Signal befindet.
c := make(chan os.Signal)
signal.Notify(c)
go func() {
for {
s := <-c
log.Println("signal :", s)
}
}
}()
Gute Protokollierung Ich wollte in die Standardausgabe und die Protokolldatei schreiben, also habe ich "io.MultiWriter" verwendet
logfile, err := os.OpenFile("./signal.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666)
if err != nil {
panic("cannnot create log :" + err.Error())
}
defer logfile.Close()
log.SetOutput(io.MultiWriter(logfile, os.Stdout))
log.SetFlags(log.Ldate | log.Ltime)
Es behandelt das Signal so und sendet es
% tail -f signal.log
2020/02/09 21:48:01 alive :
2020/02/09 21:49:01 alive :
2020/02/09 21:50:01 alive :
2020/02/09 21:50:33 signal : hangup false
Ich habe versucht, es fallen zu lassen, als SIGTERM gesendet wurde. Das Überleben wird alle 60 Sekunden bestätigt. Auch Systeme, die nicht gehandhabt werden können, wie z. B. SIGKILL, können nicht gehandhabt werden und sterben.
Ich fand heraus, dass es ein Signal gibt, um die Fenstergröße des Terminals namens SIGWINCH zu ändern.
Recommended Posts