Восстановление настроек терминала (termios) в обработчике сигналов
В коде, который изменяет настройки терминала (он встраивает python, который, в свою очередь, использует некоторые модули управления терминалами), измененное состояние сохраняется после того, как я завершаю работу через Ctrl-\ отправляя SIGQUIT процессу.
Безопасно ли сохранять настройки терминала при запуске, а затем зарегистрировать обработчик SIGQUIT, который их восстановит? Если не безопасно, что может произойти в худшем случае?
1 ответ
Обработчики сигналов обычно должны быть скудными и не выполнять много работы. Вы не должны вызывать не асинхронно-безопасные функции из обработчика сигнала. Асинхронно-сигнальные безопасные функции. Таким образом, если ваш код termios содержит функции, отличные от AS, восстановление настроек терминала из обработчика сигналов не рекомендуется (хотя вы будете обрабатывать SIGQUIT)
Как насчет этого:
fork()
указан как безопасный на странице руководства signal
, Почему бы не раскошелиться на дочерний процесс, execv
другая программа которая восстановит настройки?