metaclass: (Default)
[personal profile] metaclass
Люди, а скажите мне - через | (пайп) БИНАРНЫЕ данные проходят?
Особо интересует - на линуксе и на винде. Про первое я знаю, что проходят, т.к. arecord | aplay работает, а вот про второе уже 10 лет мучаюсь, но никак руки не дойдут проверить :)

Date: 2012-06-27 12:33 pm (UTC)
From: [identity profile] trueblacker.livejournal.com
а чем 0 круче EOF'а ?

Date: 2012-06-27 12:42 pm (UTC)
From: [identity profile] metaclass.livejournal.com
read возвращает число прочитанных байт.

Date: 2012-06-27 12:45 pm (UTC)
From: [identity profile] trueblacker.livejournal.com
"возвращает" - растяжимое понятие. Я задал вопрос для уточнения.
Ок. Пусть это будет количество байт. Это не означает, что данные закончились. Потоком может быть и консоль, т.е. чел может просто нажимать кнопки медленнее, чем программа их обрабатывает.

Поэтому, пока он не нажмёт ^Z нужно игнорировать нулевое чтение и читать снова.

Date: 2012-06-27 12:54 pm (UTC)
From: [identity profile] metaclass.livejournal.com
В консоли обычно ждет Enter а потом возвращает.
Можно этот режим выключить и читать побайтно, с таймаутами, использовать select/epoll и тому подобное.

Date: 2012-06-27 12:59 pm (UTC)
From: [identity profile] trueblacker.livejournal.com
какая разница, какой кнопки ждать? Ну enter... Что это меняет? "Не нажата ни одна клавиша" и "не нажата клавиша enter" всё равно не "данные закончились".

Date: 2012-06-27 01:36 pm (UTC)
From: [personal profile] ex0_planet
консоль тупо блокируется, пока не будет достаточно данных. достаточно - понятие растяжимое.

Date: 2012-06-27 01:34 pm (UTC)
From: [personal profile] ex0_planet
тем что не в потоке, а out-of-band

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 12th, 2025 09:59 pm
Powered by Dreamwidth Studios