Subject: bug#13183: tail -f ignores SIGPIPE

From: Pádraig Brady <[email-masked]>
Date: Sat, 27 Oct 2018 09:41:57 -0700

On 15/02/15 11:14, Pádraig Brady wrote:
> On 14/12/12 14:33, Pádraig Brady wrote:
>> tag 13183 + notabug
>> close 13183
>> stop
>>
>> On 12/14/2012 02:04 PM, Ruediger Meier wrote:
>>> Hi,
>>>
>>> I want to use tail and grep to follow a file until a particular pattern
>>> appears. But tail does not exit when grep is finished.
>>>
>>> $ echo xxx > /tmp/blabla
>>> $ tail -f /tmp/blabla |grep -m1 --line-buffered "xxx"
>>> xxx
>>>
>>> Now tail still tries to read and exits only if I write again
>>> into /tmp/blabla.
>>>
>>> Is this how it's supposed to be?
>>
>> tail does exit on SIGPIPE, however it will
>> only get the signal on write(), and so you
>> need to get more data in the file before tail will exit.
> 
> It's a fair point though that tail, since it
> can hang around forever should take special
> steps to be responsive to the other end of the pipe going away.
> I.E. it might use select() or poll(POLLHUP), to detect
> immediately/periodically the other end of the pipe going away.

Implemented in:
https://git.sv.gnu.org/cgit/coreutils.git/commit/?id=v8.27-42-gce0415f

cheers,
Pádraig