Improving mod_perl Driven Site's Performance -- Part VI: Forking and Executing Subprocesses from mod_perl Page 8
system()is not the
system(3)call [C-library]. This is how the arguments to
system()get interpreted. When there is a single argument to system(), it'll be checked for for having shell metacharacters first (like
?), and if there are any--Perl interpreter invokes a real shell program (/bin/sh -c on Unix platforms). If you pass a list of arguments to system(), they will be not checked for metacharacters, but split into words if required and passed directly to the C-level
execvp()system call, which is more efficient. That's a very nice optimization. In other words, only if you do:
system "sh -c 'echo *'"
will the operating system actually
exec()a copy of
/bin/shto parse your command. But even then since sh is almost certainly already running somewhere, the system will notice that (via the disk inode reference) and replace your virtual memory page table with one pointing to the existing program code plus your data space, thus will not create this overhead.
The mod_perl site's URL: http://perl.apache.org/
IT Solutions Builder TOP IT RESOURCES TO MOVE YOUR BUSINESS FORWARD
Which topic are you interested in?
What is your company size?
What is your job title?
What is your job function?
Searching our resource database to find your matches...