in reply to Re^2: exec vs. backtick-and-assign performance
in thread exec vs. backtick-and-assign performance
backticks will wait for the program to end before returning the output, so if the program just takes a long time to stop, you won't see any output since you're capturing it with the backticks. exec will just replace the current program with the new one, so any output of the command will be printed immediately, even if the program is still running.
by the way, if you're not doing anything with the output except printing you could also use system(), which doesn't capture the program's output, so any output will also be printed immediately (while the program is running, before system() returns).
About backticks using exec() - exec() is the only way to start a new program in unix. system(), backtics, piped open etc all use exec() behind the scenes. Calls that execute a command and return do a fork first, then call exec() in the child process. That's why exec() should always be the fastest. Not that you'd normally notice the speed difference - fork() is pretty fast (it has to be - it's the only way to start a new process).
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: exec vs. backtick-and-assign performance
by apotheon (Deacon) on Nov 12, 2006 at 23:48 UTC | |
by Joost (Canon) on Nov 13, 2006 at 00:08 UTC | |
by apotheon (Deacon) on Nov 13, 2006 at 00:24 UTC |