23.5 stdbuf: Run a command with modified I/O stream buffering

stdbuf allows one to modify the buffering operations of the three standard I/O streams associated with a program. Synopsis:

     stdbuf option... command

Any additional args are passed as additional arguments to the command.

The program accepts the following options.

-i mode
Adjust the standard input stream buffering.
-o mode
Adjust the standard output stream buffering.
-e mode
Adjust the standard error stream buffering.

The mode can be specified as follows:

Set the stream to line buffered mode. In this mode data is coalesced until a newline is output or input is read from any stream attached to a terminal device. This option is invalid with standard input.
Disable buffering of the selected stream. In this mode data is output immediately and only the amount of data requested is read from input.
Specify the size of the buffer to use in fully buffered mode. size is a number which may have one of the following multiplicative suffixes:
KB’ =>           1000 (KiloBytes)
          ‘K’  =>           1024 (KibiBytes)
          ‘MB’ =>      1000*1000 (MegaBytes)
          ‘M’  =>      1024*1024 (MebiBytes)
          ‘GB’ => 1000*1000*1000 (GigaBytes)
          ‘G’  => 1024*1024*1024 (GibiBytes)

and so on for ‘T’, ‘P’, ‘E’, ‘Z’, and ‘Y’.

NOTE: If command adjusts the buffering of its standard streams (tee does for e.g.) then that will override corresponding settings changed by stdbuf. Also some filters (like dd and cat etc.) don't use streams for I/O, and are thus unaffected by stdbuf settings.

Exit status:

     125 if stdbuf itself fails
     126 if command is found but cannot be invoked
     127 if command cannot be found
     the exit status of command otherwise