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