История изменений
Исправление vodz, (текущая версия) :
Кажется примерно разобрался.
Увы.
Правильный ответ в том, что stdio по разному буфферизует. При выводе в файл или трубу stdio буферизует по BUFSIZ|PIPE_SIZE (обычно равно PAGE_SIZE), а при выводе в терминал - построчно. Естественно, когда программа завершается, то libc-шный exit вызывает тоже flushall().
Поэтому первый grep на терминал выводит сразу, а в трубу - ждёт.
PS: То что в скобках - это просто инлайновая запись скрипта, можно рассматривать как вызов одной команды «echo_and_sleep».
Исходная версия vodz, :
Кажется примерно разобрался.
Увы.
Правильный ответ в том, что stdio по разному буфферизует. При выводе в файл или трубу stdio буферизует по BUFSIZ|PIPE_SIZE (обычно равно PAGE_SIZE), а при выводе в терминал - построчно. Естественно, когда программа завершается, то libc-шный exit вызывает тоже flushall().
Поэтому первый grep на терминал выводит сразу, а в трубу - ждёт.