Go: сигналыСигналы используют для прерывания выполнения программы и срабатывания определенных обработчиков. Если вы нажимаете комбинацию клавиш CTRL+C в терминале для остановки запущенной программы посылается сигнал INT. Обычно, при получении сигнала INT процесс убивается, но некоторые процессы могут перехватывать сигнал и игнорировать его или завершить выполняемые операции перед выходом. В Go для работы с сигналами используетя пакет os/signal, в котором определена функция Notify, с помощью которой можно перехватить выбранные сигналы или все возможные. Пример использования Notify ниже code> package main import ( "fmt" "os" "os/signal" "syscall" ) func handle(c chan os.Signal) { s := <-c // ожидание сигнала fmt.Println("Got signal:", s) } func main() { c := make(chan os.Signal, 1) signal.Notify(c, syscall.SIGUSR1) handle(c) } В данном примере функция Notify принимает на вход канал с и после получения сигнала USR1 помещает объект os.Signal в с, после чего можно произвести его обработку в процедуре handle. Некоторые программы в качестве реакции на этот сигнал выполняют перезагрузку конфигурационного файла. Notify позволяет привязать к одному каналу более чем один сигнал, это делается следующим образом.
В этом случае в канал будет помещаться сигналы USR1 и INT (нажатие CTRL+C). Сигналов достаточно много. Для того чтобы канал был привязан ко всем существующим сигналам нужно вызвать Notify без передачи списка каналов
02.08.2018 |
популярные тэги
наука
интересно
новости
технологии
история
go
golang
программирование
it
искусственный интеллект
путешествия
природа
космос
ai
базы данных
медицина
science
анализ текстов
ии
text mining
робототехника
авто
музыка
роботы
интернет
нейронные сети
robots
space
вокруг света
postgresql
алгоритмы
гитара
животные
оружие
google
nosql
авиация
здоровье
техника
auto
|