GNU/Linux >> Linux Esercitazione >  >> Linux

UNIX / Linux:3 modi per inviare segnali ai processi

Domanda :Come posso inviare il segnale a un altro processo? Puoi spiegarmi tutte le opzioni disponibili per inviare segnali a un processo in ambiente UNIX/Linux?

Rispondi :puoi inviare vari segnali ai processi utilizzando uno dei metodi spiegati in questo articolo.

1. Invia segnale a un processo usando Kill

Usa il comando kill per inviare un segnale a un processo. Ad esempio, se desideri inviare il segnale USR1 al processo "a.out", procedi come segue.

$ ps -C a.out
  PID TTY          TIME CMD
 3699 pts/1    00:00:00 a.out

$ kill -s USR1 3699

Nota :fai riferimento a 4 modi per uccidere un processo:kill, killall, pkill, xkill.

2. Invia segnale a un processo da un altro processo

È possibile utilizzare la chiamata di sistema UNIX kill (da un programma C) per inviare il segnale da un processo all'altro. Il seguente frammento di codice C mostra come utilizzare il comando kill.

La chiamata di sistema kill accetta due argomenti:1) il PID (id processo) del processo che deve essere segnalato 2) il segnale che deve essere inviato al processo. Il comando Kill restituisce 0 quando ha esito positivo.

int send_signal (int pid)
{
        int ret;
        ret = kill(pid,SIGHUP);
        printf("ret : %d",ret);

}

3. Invia segnale a un processo dalla tastiera

Quando un processo è in esecuzione sul terminale, è possibile inviare un segnale a quel processo dalla tastiera utilizzando una specifica combinazione di tasti. I seguenti sono un paio di esempi.

  • SIGINT (Ctrl + C) – Lo sai già. Premendo Ctrl + C termina il processo in primo piano in esecuzione. Questo invia il SIGINT al processo per ucciderlo.
  • Puoi inviare il segnale SIGQUIT a un processo premendo Ctrl + \ o Ctrl + Y

Puoi visualizzare le mappature dei tasti che inviano un segnale specifico a un processo utilizzando il comando "stty -a" come mostrato di seguito.

$ stty -a | grep intr
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;

Linux
  1. 30 Esercizi sui processi Linux per amministratori di sistema

  2. 4 modi per eseguire uno script di shell in UNIX / Linux

  3. Processi UNIX / Linux:funzione C fork()

  4. Gestione dei segnali UNIX/Linux:SIGEV_THREAD

  5. Quando è utile setsid() o perché abbiamo bisogno di raggruppare i processi in Linux?

5 modi rapidi per uccidere un processo in Linux

Monitoraggio dei processi su Linux

Linux vs Unix

Comandi per la gestione dei processi in Linux

Come inviare processi in background su Linux

Cos'è un processo interrotto in Linux?