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.\" 256486b015SJeremie Le Hen.\" $FreeBSD$ 266486b015SJeremie Le Hen.\" 276486b015SJeremie Le Hen.Dd April 28, 2012 286486b015SJeremie Le Hen.Dt LIBSTDBUF 3 296486b015SJeremie Le Hen.Os 306486b015SJeremie Le Hen.Sh NAME 316486b015SJeremie Le Hen.Nm libstdbuf 326486b015SJeremie Le Hen.Nd preloaded library to change standard streams initial buffering 336486b015SJeremie Le Hen.Sh DESCRIPTION 346486b015SJeremie Le HenThe 356486b015SJeremie Le Hen.Nm 366486b015SJeremie Le Henlibrary is meant to be preloaded with the 376486b015SJeremie Le Hen.Ev LD_PRELOAD 386486b015SJeremie Le Henenvironment variable to as to change the initial buffering 396486b015SJeremie Le Henof standard input, standard output and standard error streams. 406486b015SJeremie Le Hen.Pp 416486b015SJeremie Le HenAlthough you may load and configure this library manually, 426486b015SJeremie Le Henan utility, 436486b015SJeremie Le Hen.Xr stdbuf 1 , 446486b015SJeremie Le Hencan be used to run a command with the appropriate environment variables. 456486b015SJeremie Le Hen.Sh ENVIRONMENT 46*5a239e70SJeremie Le HenEach stream can be configured independently through the following 476486b015SJeremie Le Henenvironment variables (values are defined below): 486486b015SJeremie Le Hen.Bl -tag -width size -offset indent 496486b015SJeremie Le Hen.It Ev _STDBUF_I 506486b015SJeremie Le HenInitial buffering definition for the standard input stream 516486b015SJeremie Le Hen.It Ev _STDBUF_O 526486b015SJeremie Le HenInitial buffering definition for the standard output stream 536486b015SJeremie Le Hen.It Ev _STDBUF_E 546486b015SJeremie Le HenInitial buffering definition for the standard error stream 556486b015SJeremie Le Hen.El 566486b015SJeremie Le Hen.Pp 576486b015SJeremie Le HenEach variable may take one of the following values: 586486b015SJeremie Le Hen.Bl -tag -width size -offset indent 596486b015SJeremie Le Hen.It Qq 0 606486b015SJeremie Le Henunbuffered 616486b015SJeremie Le Hen.It Qq L 626486b015SJeremie Le Henline buffered 636486b015SJeremie Le Hen.It Qq B 646486b015SJeremie Le Henfully buffered with the default buffer size 656486b015SJeremie Le Hen.It Ar size 666486b015SJeremie Le Henfully buffered with a buffer of 676486b015SJeremie Le Hen.Ar size 686486b015SJeremie Le Henbytes (suffixes 'k', 'M' and 'G' are accepted) 696486b015SJeremie Le Hen.El 706486b015SJeremie Le Hen.Sh EXAMPLE 716486b015SJeremie Le HenIn the following example, the stdout stream of the 726486b015SJeremie Le Hen.Xr awk 1 736486b015SJeremie Le Hencommand 746486b015SJeremie Le Henwill be fully buffered by default because it does not refer 756486b015SJeremie Le Hento a terminal. 766486b015SJeremie Le Hen.Nm 776486b015SJeremie Le Henis used to force it to be line-buffered so 786486b015SJeremie Le Hen.Xr vmstat 8 Ns 's 796486b015SJeremie Le Henoutput will not stall until the full buffer fills. 806486b015SJeremie Le Hen.Bd -literal -offset indent 816486b015SJeremie Le Hen# vmstat 1 | LD_PRELOAD=/usr/lib/libstdbuf.so \\ 826486b015SJeremie Le Hen STDBUF_1=L awk '$2 > 1 || $3 > 1' | cat -n 836486b015SJeremie Le Hen.Ed 846486b015SJeremie Le Hen.Pp 856486b015SJeremie Le HenSee also the manpage of 866486b015SJeremie Le Hen.Xr stdbuf 1 876486b015SJeremie Le Henfor a simpler way to do this. 886486b015SJeremie Le Hen.Sh HISTORY 896486b015SJeremie Le HenThe 906486b015SJeremie Le Hen.Nm 916486b015SJeremie Le Henlibrary first appeared in 926486b015SJeremie Le Hen.Fx 8.4 . 936486b015SJeremie Le Hen.Sh AUTHORS 946486b015SJeremie Le Hen.An -nosplit 956486b015SJeremie Le HenThe original idea of the 966486b015SJeremie Le Hen.Nm 976486b015SJeremie Le Hencommand comes from 986486b015SJeremie Le Hen.An Padraig Brady 996486b015SJeremie Le Henwho implemented it in the GNU coreutils. 1006486b015SJeremie Le Hen.An Jeremie Le Hen 1016486b015SJeremie Le Henimplemented it on 1026486b015SJeremie Le Hen.Fx . 103