В чем разница между атрибутами tty IXON и IXOFF?

bash может справиться с этим. Однако это будет намного медленнее, чем Perl:

echo "1.1.1.1,Some Text Here" | 
while IFS=., read -r a b c d text; do
    printf "%d.%02d.%02d.%03d,%s\n" "$a" "$b" "$c" "$d" "$text"
done
1.01.01.001,Some Text Here
2
04.10.2019, 09:13
1 ответ

IXOFFне реализован на псевдотерминале -tty, а установка IXOFFна псевдотерминале -не имеет никакого эффекта.

IXOFFдолжен заставить драйвер tty отправлять символ VSTOPна другую сторону, когда его очередь ввода заполнена (, что должно предотвратить отправку дополнительных данных ), и символ VSTART, когда он обработал его, и есть место для дополнительных данных.

Это отличается от IXON, что заставит драйвер tty учитывать символы VSTART/ VSTOP, отправленные с другой стороны, и при получении символаVSTOP(^S)останавливать любую передачу до VSTART(^Q). ] получен символ.

В случае псевдо -tty "другая сторона" является основным терминалом, т.е. эмулятор вашего терминала; когда вы нажимаете ^S, это IXON, а не настройка IXOFF, которая заставит подчиненный tty перестать возвращать введенные символы и отображать записанные в него данные (, которые будут поставлены в очередь до тех пор, пока очередь вывода не будет заполнен, когда любой write(2)подчиненному tty либо заблокирует, либо вернетEAGAIN).

Реализация управления потоком на псевдо -ttys не требуется, потому что ядро ​​всегда знает (путем проверки поля структуры или аналогичного )того, заполнена ли входная очередь подчиненного устройства, и может просто заблокировать процесс записи на мастер pty.

Программное управление потоком полезно только при использовании реального последовательного соединения без исходящих -из -сигналов диапазона, таких как RTS/CTS :, в отличие от Unix, TCP или других «конвейеров». абстракция, провод не буферизируется и не будет заполняться и блокироваться, пока получатель не прочитает все изменения состояния с него.

6
27.01.2020, 21:58

Теги

Похожие вопросы