Zastanawiam się tylko nad różnicą między sygnałami SIGSTOP i SIGTSTP.
Zastanawiam się tylko nad różnicą między sygnałami SIGSTOP i SIGTSTP.
Odpowiedzi:
Oba sygnały mają na celu zawieszenie procesu, który ostatecznie zostanie wznowiony SIGCONT
. Główne różnice między nimi to:
SIGSTOP
Jest to sygnał wysyłany programowo (np kill -STOP pid
) natomiast SIGTSTP
(za sig nal - t erminal przystanku ) mogą być również przesyłane przez tty
kierowcę przez użytkownika, wpisując na klawiaturze, zwykle Control- Z.
SIGSTOP
nie może być ignorowany. SIGTSTP
może być.
Control-Z
że nie wyzwala, SIGTSTP
czy myślisz, że nie powinno?
terminal stop
oznacza TSTP.
/usr/include/x86_64-linux-gnu/bits/signum.h
#define SIGSTOP 19 /* Stop, unblockable (POSIX). */
#define SIGTSTP 20 /* Keyboard stop (POSIX). */
/usr/include/sys/iso/signal_iso.h
/usr/include/sys/signal.h
SIGSTOP nie może zostać zignorowany przez docelowy proces.
Dobrym tego przykładem jest odtwarzacz wideo mpv
, który może zignorować, SIGTSTP
ale 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ę.