On 20/04/18 07:56, Dr. Thomas Orgis wrote: > Hi all, > > during debugging of a background process issue where I have tail -f > feeding into a pipe, I was surprised by a change in tail introduced in > release 8.28 of GNU coreutils: The monitoring of the output pipe and > silent exit of tail e.g. in the case of > > tail -f /dev/null | true > > . This differs from earlier versions and also from BSD, for example. I > see some subtle portability bugs here. One one platform, killing the > end of a pipe fed by tail will cleanly end the tail process, too, > without tail attempting to write new data and failing _then_. On the > other platform, the pipe stays there until new data arrives to cause > tail to get the error trying to write to the pipe. > > Regardless of what behaviour is sensible, it causes scripts that > take GNU tail's behaviour for granted to have different behaviour with > other versions of this very traditional UNIX tool. > > So at the very least, this change should be documented as a possible > implementation difference in the manual, and for sure with the version > that changed behaviour, shouldn't it? > > > Regards, > > Thomas Orgis > Well we did document it in NEWS as seen in: https://git.sv.gnu.org/cgit/coreutils.git/commit/?id=v8.27-42-gce0415f
I still regard tail being more responsive to closed output being an improvement, and the more general solution, however it was a bit terse and broached as only an improvement. I pushed the following change to expand on the info: https://git.sv.gnu.org/cgit/coreutils.git/commit/?id=22424dd Marking this as done. thanks, Pádraig
