Difference between using fork/execvp and system call
System also uses a fork
/exec
... combination. If you do fork
/exec
yourself you can execute parallel to your running process, while system
is blocking (includes the wait
). Also system
executes the command not direct, but via a shell (which makes problems with setuid bit) and system
blocks/ignores certain signals (SIGINT, SIGCHILD, SIGQUIT).
Yes, system()
runs the command through a shell, while exec()
runs the command directly. Of course, introducing a shell opens up for bugs and exploits.
Edit: of course, the man page provides more detail.