16486b015SJeremie Le Hen.\" Copyright (c) 2012 Jeremie Le Hen <jlh@FreeBSD.org> 26486b015SJeremie Le Hen.\" All rights reserved. 36486b015SJeremie Le Hen.\" 46486b015SJeremie Le Hen.\" Redistribution and use in source and binary forms, with or without 56486b015SJeremie Le Hen.\" modification, are permitted provided that the following conditions 66486b015SJeremie Le Hen.\" are met: 76486b015SJeremie Le Hen.\" 1. Redistributions of source code and documentation must retain the above 86486b015SJeremie Le Hen.\" copyright notice, this list of conditions and the following disclaimer. 96486b015SJeremie Le Hen.\" 2. Redistributions in binary form must reproduce the above copyright 106486b015SJeremie Le Hen.\" notice, this list of conditions and the following disclaimer in the 116486b015SJeremie Le Hen.\" documentation and/or other materials provided with the distribution. 126486b015SJeremie Le Hen.\" 136486b015SJeremie Le Hen.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 146486b015SJeremie Le Hen.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 156486b015SJeremie Le Hen.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 166486b015SJeremie Le Hen.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 176486b015SJeremie Le Hen.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 186486b015SJeremie Le Hen.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 196486b015SJeremie Le Hen.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 206486b015SJeremie Le Hen.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 216486b015SJeremie Le Hen.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 226486b015SJeremie Le Hen.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 236486b015SJeremie Le Hen.\" SUCH DAMAGE. 246486b015SJeremie Le Hen.\" 25*c09909edSDag-Erling Smørgrav.Dd June 29, 2023 266486b015SJeremie Le Hen.Dt LIBSTDBUF 3 276486b015SJeremie Le Hen.Os 286486b015SJeremie Le Hen.Sh NAME 296486b015SJeremie Le Hen.Nm libstdbuf 306486b015SJeremie Le Hen.Nd preloaded library to change standard streams initial buffering 316486b015SJeremie Le Hen.Sh DESCRIPTION 326486b015SJeremie Le HenThe 336486b015SJeremie Le Hen.Nm 346486b015SJeremie Le Henlibrary is meant to be preloaded with the 356486b015SJeremie Le Hen.Ev LD_PRELOAD 366486b015SJeremie Le Henenvironment variable to as to change the initial buffering 376486b015SJeremie Le Henof standard input, standard output and standard error streams. 386486b015SJeremie Le Hen.Pp 396486b015SJeremie Le HenAlthough you may load and configure this library manually, 406486b015SJeremie Le Henan utility, 416486b015SJeremie Le Hen.Xr stdbuf 1 , 426486b015SJeremie Le Hencan be used to run a command with the appropriate environment variables. 436486b015SJeremie Le Hen.Sh ENVIRONMENT 445a239e70SJeremie Le HenEach stream can be configured independently through the following 456486b015SJeremie Le Henenvironment variables (values are defined below): 466486b015SJeremie Le Hen.Bl -tag -width size -offset indent 476486b015SJeremie Le Hen.It Ev _STDBUF_I 486486b015SJeremie Le HenInitial buffering definition for the standard input stream 496486b015SJeremie Le Hen.It Ev _STDBUF_O 506486b015SJeremie Le HenInitial buffering definition for the standard output stream 516486b015SJeremie Le Hen.It Ev _STDBUF_E 526486b015SJeremie Le HenInitial buffering definition for the standard error stream 536486b015SJeremie Le Hen.El 546486b015SJeremie Le Hen.Pp 556486b015SJeremie Le HenEach variable may take one of the following values: 566486b015SJeremie Le Hen.Bl -tag -width size -offset indent 576486b015SJeremie Le Hen.It Qq 0 586486b015SJeremie Le Henunbuffered 596486b015SJeremie Le Hen.It Qq L 606486b015SJeremie Le Henline buffered 616486b015SJeremie Le Hen.It Qq B 626486b015SJeremie Le Henfully buffered with the default buffer size 636486b015SJeremie Le Hen.It Ar size 646486b015SJeremie Le Henfully buffered with a buffer of 656486b015SJeremie Le Hen.Ar size 666486b015SJeremie Le Henbytes (suffixes 'k', 'M' and 'G' are accepted) 676486b015SJeremie Le Hen.El 686486b015SJeremie Le Hen.Sh EXAMPLE 696486b015SJeremie Le HenIn the following example, the stdout stream of the 706486b015SJeremie Le Hen.Xr awk 1 716486b015SJeremie Le Hencommand 726486b015SJeremie Le Henwill be fully buffered by default because it does not refer 736486b015SJeremie Le Hento a terminal. 746486b015SJeremie Le Hen.Nm 756486b015SJeremie Le Henis used to force it to be line-buffered so 766486b015SJeremie Le Hen.Xr vmstat 8 Ns 's 776486b015SJeremie Le Henoutput will not stall until the full buffer fills. 786486b015SJeremie Le Hen.Bd -literal -offset indent 796486b015SJeremie Le Hen# vmstat 1 | LD_PRELOAD=/usr/lib/libstdbuf.so \\ 806486b015SJeremie Le Hen STDBUF_1=L awk '$2 > 1 || $3 > 1' | cat -n 816486b015SJeremie Le Hen.Ed 826486b015SJeremie Le Hen.Pp 83*c09909edSDag-Erling SmørgravSee 846486b015SJeremie Le Hen.Xr stdbuf 1 856486b015SJeremie Le Henfor a simpler way to do this. 86*c09909edSDag-Erling Smørgrav.Sh SEE ALSO 87*c09909edSDag-Erling Smørgrav.Xr rtld 1 , 88*c09909edSDag-Erling Smørgrav.Xr stdbuf 1 896486b015SJeremie Le Hen.Sh HISTORY 906486b015SJeremie Le HenThe 916486b015SJeremie Le Hen.Nm 926486b015SJeremie Le Henlibrary first appeared in 936486b015SJeremie Le Hen.Fx 8.4 . 946486b015SJeremie Le Hen.Sh AUTHORS 956486b015SJeremie Le Hen.An -nosplit 966486b015SJeremie Le HenThe original idea of the 976486b015SJeremie Le Hen.Nm 986486b015SJeremie Le Hencommand comes from 996486b015SJeremie Le Hen.An Padraig Brady 1006486b015SJeremie Le Henwho implemented it in the GNU coreutils. 1016486b015SJeremie Le Hen.An Jeremie Le Hen 1026486b015SJeremie Le Henimplemented it on 1036486b015SJeremie Le Hen.Fx . 104