Без использования буферизованного stdio или вашей собственной системы буферизации, единственный способ считывания до определенного символа-разделителя или любого условия, отличного от фиксированного числа байтов, - это чтение по байтам за раз.Если вы запустите сценарии оболочки под strace
, вы заметите, что команда shell read
работает таким образом, потому что она должна оставить последующий ввод непрочитанным, чтобы его могли прочитать другие процессы, которые наследуют fd.