SIGTSTP является каноническим сигналом для приостановки процесса переднего плана и (почти) таким же, как ctrl+z
. Очевидное преимущество заключается в том, что это останавливает использование ресурсов и любое другое влияние, которое он может иметь; он замораживает состояние процесса и передает управление родительскому процессу. Менее очевидным преимуществом является компонент TTY: вы немедленно восстанавливаете контроль над stdin/out/err, а когда вы возобновляете задачу, вы либо сохраняете контроль над выполнением и вводом / выводом с помощью bg
, как если бы вы выполняли его как prog &
, или отпустите с помощью fg
(prog
.) Я знаю, что SIGCONT возобновит процесс, но я не знаю, решит ли он или как он будет выбирать между FG / BG.
Теперь разница между SIGTSTP и SIGSTOP заключается в том, что SIGSTOP не подлежит обсуждению, тогда как SIGTSTP может быть "захвачен" (обработан / пойман / и т.д.) Вот простой пример, и вот несколько предостережений. Попробуйте man 7 signal
- вы можете найти другое столкновение, если не использовать его в свою пользу.
Есть некоторые «внешние» команды, которые выполняют ту же роль - вы можете выполнить это с помощью stty ixon
/ixoff
, но я не эксперт, и я ничего не делал с сигналами. Возможно, сохраните шпаргалку, когда вы начнете тестирование, потому что кажется, что было бы очень легко заблокировать вашу среду.
Изменить - это не было полностью ясно из вашего сообщения - решит ли отключение привязки Tmux по умолчанию вашу проблему?