[Tutor] execute an OS command, get the output

Terry Carroll carroll at tjc.com
Sun Mar 12 03:07:28 CET 2006

On Sat, 11 Mar 2006, Alan Gauld wrote:

> But surely the string command will take just as long to run regardless
> of whether you use pipes or read the output into Python?

Surely it will!  Except that it doesn't.

> Are ytou saying that running strings on its own takes 10 minutes but
> running it in a pipe takes only a few seconds?

Yes, exactly.

Not any pipe, though; a pipe that is satisfied and closes down after just 
the first few hundred lines or so.

> What happens if you redirect the strings output to a file instead of a
> pipe

I haven't tried directing it to an actual file, but when directing it to 
nul: it's about 10-15 minutes; while directing it to the pipe is just a 
few seconds.

I gotta admit, this took me by surprise, too, but my guess is that once 
the head command is done, it closes the pipe it's reading from, which is 
being filled by grep; grep takes the hint and terminates, closing the pipe 
it's reading from, which is being filled by strings; and strings takes the 
hint and terminates, even though it hasn't gotten through the entire file.

And that all happens in a second or two.

More information about the Tutor mailing list