Qual è la differenza tra SIGSTOP e SIGTSTP?


Risposte:


153

Entrambi i segnali sono progettati per sospendere un processo che verrà eventualmente ripreso con SIGCONT. Le principali differenze tra loro sono:

  • SIGSTOPè un segnale inviato al livello di programmazione (es: kill -STOP pid) mentre SIGTSTP(per sig nal - t erminal fermata ) possono anche essere inviati attraverso il ttyguidatore da un utente digitando su una tastiera, di solito Control- Z.

  • SIGSTOPnon può essere ignorato. SIGTSTPpotrebbe essere.


10
Factoid: Se sei un programmatore Linux, SIGTSTP è ciò che ottieni quando usi Ctrl-Z per interrompere un processo in esecuzione in una shell senza ucciderlo. Questo di solito fa sì che la shell lo metta in un elenco di lavori sospesi.
simpleuser

@Archer non sono sicuro di capire il tuo commento. Vuoi dire che credi Control-Znon si inneschi SIGTSTPo pensi che non dovrebbe?
jlliagre

@jlliagre Ho fatto un esame più approfondito e si è scoperto che hai ragione. Ho cancellato il commento precedente.
Archer

@Archer Ok, la mia ipotesi è che tu fossi confuso dalla terminologia della pagina di manuale. terminal stopsignifica TSTP.
jlliagre

@jlliagre Vorrei, ma il sistema non lo consente, dice che posso annullare il voto negativo solo se la risposta viene modificata ...
Archer

39

/usr/include/x86_64-linux-gnu/bits/signum.h

#define SIGSTOP     19  /* Stop, unblockable (POSIX).  */
#define SIGTSTP     20  /* Keyboard stop (POSIX).  */

6
Su Solaris 10, i segnali sono definiti nel file di intestazione/usr/include/sys/iso/signal_iso.h
Kent Pawar

2
In FreeBSD 11 è a/usr/include/sys/signal.h
Greg Schmit

1

SIGSTOP non può essere ignorato dal processo mirato.

Un buon esempio di ciò è il lettore video mpv, può ignorarlo SIGTSTPma non lo è SIGSTOP.

Puoi provare con un video in esecuzione:

kill -SIGTSTP $(pidof mpv) e kill -SIGSTOP $(pidof mpv)

Ovviamente kill -SIGCONT $(pidof mpv)per riprendere a giocare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.