Почему «кот» иногда пропускает байты при чтении с другого терминала, а функция сканирования golang — нет?Linux

Ответить
Anonymous
 Почему «кот» иногда пропускает байты при чтении с другого терминала, а функция сканирования golang — нет?

Сообщение Anonymous »

Один вопрос касался pty-s (терминалы Linux Ubuntu; псевдотерминалы) и способа чтения (cat) golang из них.
Сначала я сделал следующее. p>
  • откройте два терминала (

    Код: Выделить всё

    dev/pts/0
    - 0 и dev/pts/1 - 1)
  • затем я набираю во втором терминале "cat dev/pts/0" (так что все, что написано на первый терминал будет отображаться на втором)
  • начинаем писать в первом терминале (TUI)
Это обычно работает большую часть времени, но некоторые символы время от времени пропускаются время.
Точнее, для тех символов, которые не отображаются во втором терминале, у меня есть эхо, а для тех, что отображаются, нет. Это как если бы echo и cat конкурировали за символы.
Однако, когда я работаю с функциями сканирования golang и fmt, всякий раз, когда я пишу что-то в терминал (и, следовательно, в /dev /pts/0) функция сканирования считывает из него все (без пропущенных байтов) + введенный контент отображается в TUI (в этом случае работает «эхо»).

Код: Выделить всё

package main

import "fmt"

func main() {
var input string

fmt.Println("Enter text:")

for {
fmt.Scanln(&input)
fmt.Println("You wrote:", input)
}
}
Таким образом, в данном случае похоже, что «конкуренции» между echo и golang не существует...
Я ожидаю такого же поведения в обоих случаях. В частности, читать все байты в обоих случаях и иметь (или не иметь) эхо в обоих случаях.
В чем разница? Почему «cat» иногда пропускает байты при чтении с другого терминала, а функция сканирования golang — нет? Я думал, что golang просто читает из «dev/pts/0» так же, как это делает «cat». и просто выдает результат.

Подробнее здесь: https://stackoverflow.com/questions/793 ... al-but-the
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»