Just another Perl shrine | |
PerlMonks |
Re^5: System command silent screenby afoken (Chancellor) |
on Oct 10, 2010 at 19:18 UTC ( [id://864506]=note: print w/replies, xml ) | Need Help?? |
No, it isn't perfect. It invokes an unknown shell with unquoted arguments. That's begging for trouble. If you want your script to play safe, fork() manually, then open /dev/null (or even better the return value of File::Spec->devnull()) as STDOUT and STDERR in the child process, then call exec() with a list of program name and arguments. In the parent process, wait() or waitpid() for the PID returned by fork(). This way, no shell is involved, and all of those nasty quoting problems are magically gone. Of course, this requires more typing and more thinking. Alternatively, you can use one of the CPAN modules that wraps open(), fork(), exec(), waitpid(). Look at IPC::Run and IPC::Run3. Alexander
-- Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)
In Section
Seekers of Perl Wisdom
|
|