xref: /freebsd/lib/libstdbuf/libstdbuf.3 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
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