Eric Blake wrote: >>When you use head to read a certain number of lines out of a pipe >>sometimes it eats more data than you ask it to, >> >>Well in the first case hello and world were immediately available to >>be read and head -1 read them both into it's buffer before discovering >>that actually it should have stopped at the first newline. > > > There is nothing in POSIX that requires it to stop at the first newline, > unless stdin is a terminal (in which case stdin defaulted to line-buffering). > This issue has come up before, and it is more than just head that > are affected - parsing for line ends slows down input, and complicates > code, so it should only be done in a general wrapper utility (kind of > like nice or nohup), rather than incorporated into every utility that > can act as a filter: > > http://lists.gnu.org/archive/html/bug-coreutils/2006-03/msg00118.html > > But so far, no one has implemented something along those lines.
As I said already on that thread, I don't think a wrapper program will help in this case, as the child (glibc) will reinstantiate the default stdio buffering. Pádraig. _______________________________________________ Bug-coreutils mailing list [email protected] http://lists.gnu.org/mailman/listinfo/bug-coreutils
