Книга: Разработка приложений в среде Linux. Второе издание
16.5.5. Флаги режима вывода
16.5.5. Флаги режима вывода
Флаги режима вывода модифицируют обработку выходных данных только в случае установкиOPOST
. Ни один из этих флагов не переносим, поскольку POSIX определяет только OPOST
и называет его "реализация определена". Однако вы обнаружите, что настоящие приложения обработки терминалов часто нуждаются в обработке выходных данных, а флаги режима вывода, доступные в Linux, доступны также в большинстве систем Unix, включая SVR4.
Код терминала отслеживает текущий столбец, что позволяет подавить лишние символы возврата каретки ('r'
) и преобразовать, где возможно, табуляцию в пробелы. Столбцы отсчитываются, начиная с нуля. Текущий столбец устанавливается в ноль всякий раз, когда передается или предполагается символ возврата каретки ('r'
), как может быть вызвано символом новой строки ('n'
) при установке ONLRET
или ONLCR
, или когда текущий столбец установлен в единицу и передается символ забоя ('b'
).
Флаги, работающие на с_oflag
, перечислены ниже.
OPOST |
Это единственный флаг режима вывода, определенный в POSIX, который сообщает, что он включает обработку выходных данных, "определяемую реализацией". Если OPOST не установлен, к другим флагам режима вывода не обращаются и обработка выходных данных не выполняется. |
OLCUC |
При установке OLCUC символы нижнего регистра передаются терминалу как символы верхнего регистра. Этот флаг в POSIX не определен. |
ONLCR |
При установке ONLCR перед передачей символа новой строки ('n' ) передается символ возврата каретки ('r' ). Текущий столбец устанавливается в ноль. Этот флаг в POSIX не определен. |
ONOCR |
При установке ONOCR символы возврата каретки ('r' ) ни обрабатываются, ни передаются, если текущий столбец равен нулю. Этот флаг в POSIX не определен. |
OCRNL |
При установке OCRNL символы возврата каретки ('r' ) преобразуются в символы новой строки ('n' ). При установке ONLRET текущий столбец устанавливается в ноль. Этот флаг в POSIX не определен. |
ONLRET |
При установке ONLRET во время передачи символа новой строки ('n' ) или возврата каретки ('r' ) текущий столбец устанавливается в ноль. Этот флаг в POSIX не определен. |
OXTABS |
При установке OXTABS символы табуляции преобразуются в пробелы. Позиции табуляции установлены после каждого восьмого символа, а количество передаваемых пробелов определяется текущим столбцом. Этот флаг в POSIX не определен. |
Кроме того, существуют флаги задержки, которые устанавливать не нужно; они предназначены для компенсации старого, плохо спроектированного и на данный момент, к счастью, редко встречающегося оборудования. За управление флагами задержки ответственны библиотеки termcap
и terminfo
. Это означает, что в их модификации нет необходимости. В [37] они упомянуты как устаревшие. Ядро Linux не реализует их в данный момент, и, поскольку это свойство не пользуется спросом, они вряд ли будут реализованы в будущем.
- 16.5.4. Флаги режима ввода
- 16.5.3. Флаги
- Включение и отключение синхронного вывода
- 2.6. Термостабилизация режима каскада на биполярном транзисторе
- 2. Правила вывода Армстронга
- 3. Производные правила вывода
- 1.6 Драйверы и буферы ввода-вывода
- Глава 6 BIOS – базовая система ввода-вывода
- Рис. 94. Разрешить использование спящего режима.
- 3.4.1. Смена режима
- 6.2. Модели ввода-вывода
- Флаги форматирования строк .NET