Difference between using fork/execvp and system call Difference between using fork/execvp and system call c c

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.


system() will fork()/exec() the shell, and then shell will fork()/exec() the program you want to launch.

So system() is twice as heavy as fork()/exec()