tgoop.com/go_interview_lib/350
Last Update:
💬 Чем отличаются сигналы Linux? Какие можно перехватить?
Сигналы в Linux представляют собой ограниченную форму межпроцессного взаимодействия, используемую для отправки уведомлений процессу о различных событиях. Они часто используются для уведомления процесса о необходимости завершения работы или информирования о возникновении какой-либо ошибки.
📌 Основные различия:
1. Синхронные сигналы — вызываются ошибками в программе (например, деление на ноль). Эти сигналы отправляются напрямую процессу, выполняющему ошибочное действие.
2. Асинхронные сигналы — посылаются внешними процессами или системой. Например, SIGKILL или SIGTERM, отправляемые для завершения процесса.
📌 Перехватываемые и неперехватываемые сигналы:
🔹 Перехватываемые сигналы могут быть обработаны программой. Программа может определить функцию-обработчик для таких сигналов, изменяя стандартное поведение. Например, SIGTERM и SIGUSR1 можно перехватить и обработать, выполнив определённые действия перед завершением программы или инициированием других процедур.
🔹 Неперехватываемые сигналы нельзя перехватить или проигнорировать. Эти сигналы немедленно выполняют своё стандартное действие. Примером неперехватываемого сигнала является SIGKILL, который всегда немедленно завершает процесс.
📌 Примеры перехватываемых сигналов:
🔹 SIGTERM — просит процесс завершиться. Это корректный способ попросить программу завершить свою работу.
🔹 SIGHUP — уведомляет процесс о потере управляющего терминала. Часто используется для перезагрузки конфигураций сервисов.
🔹 SIGUSR1, SIGUSR2 — резервируются для использования в пользовательских приложениях.
📌 Примеры неперехватываемых сигналов:
🔹 SIGKILL — немедленно завершает процесс. Не может быть перехвачен или обработан.
🔹 SIGSTOP — останавливает (приостанавливает) процесс до получения сигнала SIGCONT.
BY Библиотека Go для собеса | вопросы с собеседований
Share with your friend now:
tgoop.com/go_interview_lib/350