Re: kern/154915: [libc] [patch] Force stdio output streams to
The following reply was made to PR kern/154915; it has been noted by GNATS.
From: Oliver Fromme <olli@lurza.secnetix.de>
To: bug-followup@FreeBSD.org, jeremie@le-hen.org
Cc:
Subject: Re: kern/154915: [libc] [patch] Force stdio output streams to line-buffered mode
Date: Thu, 16 Feb 2012 14:49:50 +0100 (CET)
I think introducing an environment variable for this purpose
is a bad hack. I would advise against this.
Many tools already have options for unbuffered or line-buffered
output (for example cat -u), and there are also other ways to
circumvent such problems.
For example, the problem quoted in the PR can be solved like this,
using the -u option of cat:
$ iostat -x 1 | cat -un | grep ad1
or avoiding cat completely (also might be more efficient,
saving one process and one pipe, though I haven't benchmarked
this):
$ iostat -x 1 | awk '{n+=1} /ad1/{print n, $0}'
For certain other cases, I have the following alias in my ~/.zshrc
that simulates a TTY environment for a tool so it is forced to
use line-buffered output:
alias intty='script -qt0 /dev/null'
So I can write:
$ intty sometool -args | grep ...
However, the intty alias only works when it is the first command
in a pipeline (this is a limitation of the "script" command).
In the above example, the cat command is not the first, but a
subshell can be used to work around this:
$ intty sh -c 'iostat -x 1 | cat -n' | grep ad1
(It should work with any shell that supports aliases, not just
zsh, of course.)
I suggest closing this PR.
Best regards
Oliver
_______________________________________________
freebsd-bugs@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscribe@freebsd.org"
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):