Код терминала отслеживает текущий столбец, что позволяет подавить лишние символы возврата каретки ( '\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.6. Управляющие флаги
Флаги режима управления влияют на такие параметры протокола, как четность и управление потоком [114] Linux также использует c_cflag для хранения скорости, но не стоит на это полагаться. Вместо этого применяйте cfsetospeed() и cfstispeed() .
. Флаги, устанавливаемые в с_cflag, описаны ниже.
CLOCAL |
При установке CLOCALлинии управления модемом игнорируются. Если он не установлен, open()блокируется до тех пор, пока модем не объявит состояние ответа абонента, утвердив линию обнаружения несущей. |
CREAD |
Символы могут приниматься только в случае установки CREAD. Его сбрасывать не обязательно. ( Примечание . Попробуйте запустить stty -cread.) |
CSIZE |
CSIZE— это маска для кодов, устанавливающих размер передаваемого символа в битах. Размер символа следует установить в перечисленные ниже значения. CS5для пяти бит на символ; CS6для шести бит на символ; CS7для семи бит на символ; CS8для восьми бит на символ. |
CSTOPB |
При установке CSTOPBна конце каждого кадра символа генерируется по два стоповых бита. Если CSTOPBне установлен, генерируется лишь по одному стоповому биту. Устаревшее оборудование, требующее двух стоповых битов, встречается редко. |
HUPCL |
Если установлен, то при закрытии последнего открытого файлового дескриптора на устройстве уровень на линиях последовательного порта DTR и RTS (если они существуют) будет снижен, чтобы заставить модем разорвать соединение. То есть, например, если пользователь, вошедший в систему через модем, затем выходит из нее, модем разрывает соединение. Если программа передачи данных открывает устройство для исходящих вызовов, а процесс затем закрывает устройство (или завершается), модем разорвет соединение. |
PARENBи PARODD |
При установке PARENBгенерируется бит четности. Если PARODDне установлен, генерируется проверка на четность. Если PARODDустановлен, генерируется проверка нечетность. Если PARENBне установлен, PARODDигнорируется. |
CRTSCTS |
Использовать аппаратное управление потоком (линии RTS и CTS). При высоких скоростях (19 200 бит/с и более) программное управление потоком с помощью символов XON и XOFF становится неэффективным. Вместо этого следует использовать аппаратное управление потоком. Этот флаг не определен в POSIX и не доступен под этим именем в большинстве других систем Unix. Это особенно непереносимая область управления терминалом, несмотря на распространенную потребность в аппаратном управлении потоком в современных системах. Система SVR4 особенно характерна тем, что она не предоставляет возможности установки управления потоком с помощью termios, а только через другой интерфейс под названием termiox. |
16.5.7. Управляющие символы
Читать дальше