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

Просто интересно узнать о разнице между сигналами SIGSTOP и SIGTSTP.


person user1419715    schedule 09.08.2012    source источник


Ответы (3)


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

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

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

person jlliagre    schedule 09.08.2012
comment
Factoid: Если вы программист Linux, SIGTSTP — это то, что вы получаете, когда используете Ctrl-Z, чтобы прервать процесс, работающий в оболочке, не убивая его. Обычно это приводит к тому, что оболочка помещает его в список приостановленных заданий. - person simpleuser; 19.06.2015
comment
@Archer Я не уверен, что понял твой комментарий. Вы имеете в виду, что считаете, что Control-Z не вызывает SIGTSTP, или вы думаете, что не должно? - person jlliagre; 14.01.2019
comment
@jlliagre Я провел более тщательный опрос, и оказалось, что вы правы. Я удалил предыдущий комментарий. - person Archer; 14.01.2019
comment
@Archer Хорошо, я предполагаю, что вас смутила терминология страницы руководства. terminal stop означает TSTP. - person jlliagre; 14.01.2019
comment
@jlliagre Я хочу, но система этого не разрешает, она говорит, что я могу отменить отрицательный голос только в том случае, если ответ будет отредактирован… - person Archer; 14.01.2019

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

#define SIGSTOP     19  /* Stop, unblockable (POSIX).  */
#define SIGTSTP     20  /* Keyboard stop (POSIX).  */
person Royce Chao    schedule 22.04.2013
comment
В Solaris 10 сигналы определяются в заголовочном файле /usr/include/sys/iso/signal_iso.h - person Kent Pawar; 13.08.2013
comment
В FreeBSD 11 это /usr/include/sys/signal.h. - person Greg Schmit; 09.01.2018

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

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

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

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

Конечно kill -SIGCONT $(pidof mpv) возобновить игру.

person bob dylan    schedule 30.09.2018