← Back to team overview

sslug-teknik team mailing list archive

Re: stop "find" efter første match

 

On 26/08/2009, at 14.01, Peter Makholm wrote:

Jon Bendtsen <bendtsen@xxxxxxx> writes:

$ find / | head -n 1

Ja, det stopper find-processen ret hurtigt efter første match.
hmm, stopper det nu også find??
Jeg mener nu at find vil køre videre i baggrunden, men "head -n 1" vil
bare begrænse outputtet til den første linie!
Den køre videre i baggrunden.
Vrøvl. Det er ikke for sjov at jeg i mit indlæg siger at den stopper.

Empiri er en god ting: Vi er enige om at 'find /' på et almindeligt
desktop-system vil være tydelig i top(1), ikke? Prøv at udføre præcis
den kommando jeg gav. Døde find?

Forklaringen er at find modtager et SIGPIPE første gang den skriver
til STDOUT efter at head er færdig. Hvis det ikke får jeres
find-process til at dø, så er jeres find(1) broken. (Og hvis find(1)
ikke bliver sigpipet, så er jeres head(1) i stykker).
Ja, men dør find PRÆCIS når der er fundet den første output, eller  
bliver | buffered så det er først når bufferen er fuld at head bliver  
kørt?


Follow ups

References