Сначала я сделал следующее. p>
- откройте два терминала (- 0 и dev/pts/1 - 1)
Код: Выделить всё
dev/pts/0 - затем я набираю во втором терминале "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)
}
}
Я ожидаю такого же поведения в обоих случаях. В частности, читать все байты в обоих случаях и иметь (или не иметь) эхо в обоих случаях.
В чем разница? Почему «cat» иногда пропускает байты при чтении с другого терминала, а функция сканирования golang — нет? Я думал, что golang просто читает из «dev/pts/0» так же, как это делает «cat». и просто выдает результат.
Подробнее здесь: https://stackoverflow.com/questions/793 ... al-but-the
Мобильная версия