Pádraig Brady <p...@draigbrady.com> writes: > Thanks a lot for the patch. > > There is similar functionality in tail.c (which should probably be reused > if we do decide to implement this in tee as it's tricky to do portably). > Anyway the tail(1) case makes sense considering:
Looking at ``check_output_alive'', this logic should be fairly easy to reuse. Worst case, I'd need to refactor some of the code to handle the non-pipe-check case more elegantly so that it doesn't become too unreadable when also adding the logic to pick between poll and select. > tail -f file.log | grep -q trigger && process_immediately > > So a similar use case with tee might be: > > tee -p <file.in >(grep -q trigger_1) | grep -q trigger_2 && > process_immediately > > However tee wouldn't be waiting for more input in that case. > It would either consume the whole file, or exit when processing it. > > So a more appropriate case is: > > intermittent_output | > tee -p >(grep -q trigger_1) | grep -q trigger_2 && process_immediately This case is just about what we were using tee for when I wrote this patch. We use a compiler wrapper that compares the outputs of few compilers by running them in parallel (to detect some new behavior), and we started noticing some builds would mysteriously hang forever. I traced it back to ``tee'' waiting on stdin even after the child processes die on occasion. Really, that was an oversight on my part. I didn't think of the (quite normal) case of stdin being some long-lived low traffic pipe rather than either a file or /dev/null or a pipe that gets closed properly after writing. > Where intermittent_output is stdin, the use case is a bit contrived > as any input will cause tee to exit. > The general more general non stdin case above has some merit, > though not as common as the tail example I think. Right, but no user input could ever happen when the hangs described above happened, since it'd happen in some automated code, so (AFAICT) the only option was to teach tee to detect outputs going away more promptly. > I'll think a bit more about it. > > thanks! > Pádraig Thank you! Have a great evening. -- Arsen Arsenović
signature.asc
Description: PGP signature