bsdgrep does not work with tail -f | grep combination

Sean C. Farley scf at FreeBSD.org
Wed Aug 4 17:49:34 UTC 2010


On Tue, 3 Aug 2010, Gabor Kovesdan wrote:

> Em 2010.08.03. 19:25, poyopoyo at puripuri.plala.or.jp escreveu:
>> Hi,
>> 
>> It seems bsdgrep does not work when piped from tail -f.
>> I'm running r210728.
>> 
>> term0$ jot 10>  /tmp/1
>> term0$ tail -f /tmp/1 | grep 0
>> [no output]
>> 
>> otherterm$ jot 10>>  /tmp/1
>> [no output to term0]
>> 
>> =====
>> 
>> with GNU grep:
>> 
>> term0$ tail -f /tmp/1 | gnugrep 0
>> 10
>> otherterm$ jot 10>>  /tmp/1
>> [on term0]
>> 10
>> 10
>> 
> I've checked on 8.0 and GNU grep doesn't output anything either for me. If 
> you use tail -f, you will enter more lines and end it with EOF, won't you? 
> And then BSD grep will process the input and print out matches. I don't think 
> it's bad behaviour in itself but if you can explain why you think it's bad 
> I'm willing to change it.

On 8.1, GNU grep (from system) and FreeGrep (personal repo with my 
fastcomp changes) both output the '10' from this test.  Are you sure you 
ran GNU grep on that system and did not accidentally run a copy of BSD 
grep?

With bsdgrep in HEAD, I think it is not processing the input until 
stdio's buffer is flushed at the 8KB mark.  I barely looked at the code, 
so I am merely surmising.

Sean
-- 
scf at FreeBSD.org


More information about the freebsd-current mailing list