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:
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ć.
Control-Zże nie wyzwala, SIGTSTPczy myślisz, że nie powinno?
terminal stopoznacza 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ć, 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ę.