xref: /freebsd/lib/libstdbuf/libstdbuf.3 (revision c09909ed889f4722e68b192e206dff1b03182edb)
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.\"
27*c09909edSDag-Erling Smørgrav.Dd June 29, 2023
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
465a239e70SJeremie 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
85*c09909edSDag-Erling SmørgravSee
866486b015SJeremie Le Hen.Xr stdbuf 1
876486b015SJeremie Le Henfor a simpler way to do this.
88*c09909edSDag-Erling Smørgrav.Sh SEE ALSO
89*c09909edSDag-Erling Smørgrav.Xr rtld 1 ,
90*c09909edSDag-Erling Smørgrav.Xr stdbuf 1
916486b015SJeremie Le Hen.Sh HISTORY
926486b015SJeremie Le HenThe
936486b015SJeremie Le Hen.Nm
946486b015SJeremie Le Henlibrary first appeared in
956486b015SJeremie Le Hen.Fx 8.4 .
966486b015SJeremie Le Hen.Sh AUTHORS
976486b015SJeremie Le Hen.An -nosplit
986486b015SJeremie Le HenThe original idea of the
996486b015SJeremie Le Hen.Nm
1006486b015SJeremie Le Hencommand comes from
1016486b015SJeremie Le Hen.An Padraig Brady
1026486b015SJeremie Le Henwho implemented it in the GNU coreutils.
1036486b015SJeremie Le Hen.An Jeremie Le Hen
1046486b015SJeremie Le Henimplemented it on
1056486b015SJeremie Le Hen.Fx .
106