Яка різниця між SIGSTOP та SIGTSTP?


Відповіді:


153

Обидва сигнали призначені для призупинення процесу, який згодом буде відновлено 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 Добре, я гадаю, що вас бентежила термінологія сторінки вручну. terminal stopозначає TSTP.
jlliagre

@jlliagre Я хочу, але система не дозволить цього, вона говорить, що я можу скасувати знищення, лише якщо відповідь буде відредагована…
Archer

39

/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.