in reply to Re: system call not working
in thread system call not working
But the "or die" part is wrong: system() will return the exit status of the process, which is based on shell semantics: a return value of zero means "success" (i.e. "good") whereas any non-zero value means "failure" (i.e. "bad") -- so you probably want to say "and die" instead. But that's confusing, so it's usually better to say it like this:
(update: my apologies -- I missed the "== 0" part in borisz's post.)
As to the reason for the multi-arg usage, the difference between this:
and this:system( "$prog @args" );
can be demonstrated harmlessly if $prog is set to something like "cat" and any element of @args is set to something like "\$HOME/.bashrc; echo I could delete everything right now".system( $prog, @args );
In the multi-arg usage (the latter choice), each element of @args is passed directly to the "argv" array of "cat" -- if an arg does not map to a readable file name, cat reports an error. In the single-string command-line case, the whole string is passed to a shell, and the shell executes the string. If the string happens to contain workable instructions that you don't expect or don't want, you could be in for a nasty surprise.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Re: system call not working
by borisz (Canon) on May 13, 2004 at 08:30 UTC |