Какие сигналы мне нужно обрабатывать при использовании tcgetattr () и tcsetattr ()? - PullRequest
1 голос
/ 08 сентября 2011

POSIX 2008 говорит :

Программа, которая использует эти функции, должна быть написана, чтобы поймать все сигналы и принять другие соответствующие меры, чтобы при программа завершает, запланировано или нет, терминальное устройство состояние восстанавливается до исходного состояния.

об использовании tcgetattr () и tcsetattr () для изменения состояния терминального устройства. В целом, какие сигналы должны обрабатываться и какие «другие соответствующие действия» должны быть предприняты? Если на этот вопрос нельзя ответить вообще, какие сигналы / действия подходят при использовании tcgetattr () и tcsetattr () для выключения эхо-сигнала терминала?

1 Ответ

2 голосов
/ 08 сентября 2011

Смысл комментария в том, что tcsetattr изменит свойства вмещающего терминала. Таким образом, если вы напишите программу, которая отключает эхо-сигнал терминала, и эта программа завершит работу без сброса значения, то она будет отключена на время сеанса (если только другая программа не включит его явно).

Надлежащим образом, если вы собираетесь изменить атрибут, сохраните все старые значения перед тем, как их изменить (а затем откатите изменения перед выходом). Это можно сделать в обработчике сигналов, на чем сосредоточена рекомендация.

...