Difference between "system" and "exec" in Linux?

Kamil  picture Kamil · Nov 8, 2009 · Viewed 80.9k times · Source

What is the difference between system and exec family commands? Especially I want to know which one of them creates child process to work?

Answer

Carl Norum picture Carl Norum · Nov 8, 2009

system() calls out to sh to handle your command line, so you can get wildcard expansion, etc. exec() and its friends replace the current process image with a new process image.

With system(), your program continues running and you get back some status about the external command you called. With exec(), your process is obliterated.

In general, I guess you could think of system() as a higher-level interface. You could duplicate its functionality yourself using some combination fork(), exec(), and wait().

To answer your final question, system() causes a child process to be created, and the exec() family do not. You would need to use fork() for that.