В чем разница между SIGSTOP и SIGTSTP?


Ответы:


154

Оба сигнала предназначены для приостановки процесса, который в конечном итоге будет возобновлен SIGCONT. Основные различия между ними:

  • SIGSTOPэто сигнал , посылаемый программно (например , kill -STOP pid) , а SIGTSTP(для сиг конечной - т erminal остановки ) также может быть послан через ttyдрайвер абонентские , набрав на клавиатуре, как правило , Control- Z.

  • SIGSTOPнельзя игнорировать. SIGTSTPвозможно.


10
Фактоид: если вы программист под Linux, SIGTSTP - это то, что вы получаете, когда используете Ctrl-Z для прерывания процесса, запущенного в оболочке, не убивая его. Обычно это приводит к тому, что оболочка помещает его в список приостановленных заданий.
simpleuser

@Archer Я не уверен, что понял ваш комментарий. Вы имеете в виду, что верите, что Control-Zэто не срабатывает, SIGTSTPили вы думаете, что не должно?
jlliagre

@jlliagre Я провел более подробный обзор, и оказалось, что вы правы. Я удалил предыдущий комментарий.
Archer

@Archer Хорошо, я думаю, вы были сбиты с толку терминологией справочной страницы. terminal stopозначает ТСТП.
jlliagre

@jlliagre Я хочу, но система не позволяет этого, она говорит, что я могу отменить отрицательный голос, только если ответ будет отредактирован ...
Арчер

40

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

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

6
В Solaris 10 сигналы определены в файле заголовка/usr/include/sys/iso/signal_iso.h
Кент Павар

2
В FreeBSD 11 это/usr/include/sys/signal.h
Грег Шмит

1

Целевой процесс не может игнорировать сигнал SIGSTOP.

Хорошим примером этого является видеоплеер mpv, он может игнорировать, SIGTSTPно не может SIGSTOP.

Вы можете протестировать с запущенным видео:

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

Конечно, kill -SIGCONT $(pidof mpv)чтобы продолжить игру.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.