Я работаю над проектом Tcl
, где определенная процедура будет работать непрерывно. пользователь может прервать эту процедуру в любое время, используя некоторую комбинацию клавиш. Так что в принципе, мне нужно до trap
сигнал в коде Tcl
. Пока все сделано, кроме одной проблемы.Что такое сигналы linux, которые могут быть захвачены в Tcl
Я использую Ctrl+Z
. Т.е. SIGSUSP
сигнал (SIGTSTP
в случае Tcl), который технически выполняет эту работу.
signal trap sigtstp onAbort
Но нажатие Ctrl+Z
немедленно возвращает строку Shell, остальная часть выхода из программы приходит после того, что и когда выход подходит к концу, не командная строка не возвращается (как уже вернулся раньше). Мне нужно снова нажать Enter
, чтобы получить приглашение.
Ниже приводится случай, на который я ссылаюсь. Вы можете увидеть, что приглашение ([email protected]:~$
) возвращается между выходом основной программы.
Кроме того, в качестве выходного сигнала нажатия Ctrl+Z
, он возвращается [40]+ Stopped
, который немного раздражает. Могу ли я избежать этого?
Могу ли я избежать этой проблемы, используя какой-либо другой сигнал комбинации клавиш? Или я могу избежать этого с помощью Ctrl+Z
, а также что-нибудь?
ПРИМЕЧАНИЕ. Я попытался использовать Ctrl+C
. С этим я получил точно ожидаемое поведение. К сожалению, я не могу использовать Ctrl+C
, поскольку он используется для некоторых других функций.
На самом деле 'Ctrl' +' z' отправляет SIGTSTP, который _can_ будет перехвачен. По-прежнему очень рекомендуется останавливать процесс, когда он отправляется, но некоторая очистка (например, терминала) может быть выполнена по пути. –
Спасибо! Я не знал об этом. –