Jaka jest różnica między SIGSTOP a SIGTSTP?


Odpowiedzi:


154

Oba sygnały mają na celu zawieszenie procesu, który ostatecznie zostanie wznowiony SIGCONT. Główne różnice między nimi to:

  • SIGSTOPJest to sygnał wysyłany programowo (np kill -STOP pid) natomiast SIGTSTP(za sig nal - t erminal przystanku ) mogą być również przesyłane przez ttykierowcę przez użytkownika, wpisując na klawiaturze, zwykle Control- Z.

  • SIGSTOPnie może być ignorowany. SIGTSTPmoże być.


10
Fakt: Jeśli jesteś programistą Linuksa, SIGTSTP jest tym, co dostajesz, gdy używasz Ctrl-Z do przerwania procesu działającego w powłoce bez zabijania go. Zwykle powoduje to, że powłoka umieszcza ją na liście zawieszonych zadań.
simpleuser

@Archer Nie jestem pewien, czy rozumiem twój komentarz. Czy masz na myśli to, że uważasz, Control-Zże nie wyzwala, SIGTSTPczy myślisz, że nie powinno?
jlliagre

@jlliagre Zrobiłem dokładniejszą ankietę i okazało się, że masz rację. Usunąłem poprzedni komentarz.
Archer

@Archer Ok, domyślam się, że byłeś zdezorientowany terminologią strony podręcznika. terminal stopoznacza TSTP.
jlliagre

@jlliagre Chcę, ale system na to nie pozwala, mówi, że mogę anulować głos przeciwny tylko wtedy, gdy odpowiedź zostanie zmieniona…
Archer,

40

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

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

6
W systemie Solaris 10 sygnały są zdefiniowane w pliku nagłówkowym/usr/include/sys/iso/signal_iso.h
Kent Pawar

2
We FreeBSD 11 jest/usr/include/sys/signal.h
Greg Schmit,

1

SIGSTOP nie może zostać zignorowany przez docelowy proces.

Dobrym tego przykładem jest odtwarzacz wideo mpv, który może zignorować, SIGTSTPale nie SIGSTOP.

Możesz przetestować z uruchomionym wideo:

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

Oczywiście, kill -SIGCONT $(pidof mpv)żeby wznowić grę.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.