Назад к вопросам
Wildberries
Senior
7
Какие сигналы Linux знаешь? Для чего они используются?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Linux сигналы — это механизм асинхронного уведомления процессов о событиях. Они используются для управления процессами, обработки ошибок и взаимодействия с ОС.
Основные сигналы:
SIGINT(2) — прерывание процесса (обычно Ctrl+C в терминале).SIGTERM(15) — запрос на корректное завершение процесса.SIGKILL(9) — немедленное завершение процесса (нельзя перехватить).SIGSTOP(19) — приостановка процесса (нельзя игнорировать).SIGCONT(18) — продолжение приостановленного процесса.SIGSEGV(11) — ошибка сегментации (некорректный доступ к памяти).SIGALRM(14) — сигнал таймера.SIGCHLD(17) — уведомление родительского процесса о завершении дочернего.
Использование:
- Управление жизненным циклом процессов (запуск, остановка, перезапуск).
- Обработка исключительных ситуаций (например, очистка ресурсов при завершении).
- Реализация таймаутов и периодических задач.
Пример обработки сигнала SIGINT в Go:
import (
"os"
"os/signal"
"syscall"
"fmt"
)
func main() {
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGINT)
fmt.Println("Ожидание SIGINT (Ctrl+C)...")
<-sigs
fmt.Println("Получен SIGINT, завершаем работу")
}