Sobes.tech
Junior — Middle

Explique o que são sinais no sistema operativo Linux e como trabalhar com eles

sobes.tech IA

Resposta da IA

No Linux, os sinais são um mecanismo de notificação assíncrona de processos sobre eventos (por exemplo, interrupção, término de um processo filho, timeout).

Pontos principais:

  • Os sinais têm identificadores numéricos (por exemplo, SIGINT, SIGTERM).
  • Um processo pode tratar um sinal com um manipulador de sinais ou ignorá-lo.
  • Se o sinal não for tratado, a ação padrão é aplicada (por exemplo, terminar o processo).

Exemplo de tratamento do sinal SIGINT (Ctrl+C) em C:

#include <signal.h>
#include <stdio.h>
#include <unistd.h>

void handler(int signum) {
    printf("Sinal %d recebido, encerrando...\n", signum);
    _exit(0);
}

int main() {
    signal(SIGINT, handler);
    while(1) {
        printf("A trabalhar...\n");
        sleep(1);
    }
    return 0;
}

No shell, sinais podem ser enviados usando o comando kill com o PID, por exemplo, kill -SIGTERM 1234.