in reply to Re: Reading from a command pipe
in thread Reading from a command pipe

It is new and strange to me that outputing in STDOUT dumps line by line, but piping to another program is dumped block by block.

This is the normal/default behavior.  Quoting from the man page of setvbuf(3)  (the C lib function to change the buffering mode):

The three types of buffering available are unbuffered, block buffered, and line buffered. When an output stream is unbuffered, information appears on the destination file or terminal as soon as written; when it is block buffered many characters are saved up and written as a block; when it is line buffered characters are saved up until a newline is output or input is read from any stream attached to a terminal device (typically stdin). The function fflush(3) may be used to force the block out early. (See fclose(3).) Normally all files are block buffered. When the first I/O operation occurs on a file, malloc(3) is called, and a buffer is obtained. If a stream refers to a terminal (as stdout normally does) it is line buffered. The standard error stream stderr is always unbuffered by default.

(emphasis mine)

When you pipe stdout to another program, it is no longer connected to a terminal, hence it is block-buffered by default.