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

c, exec, fork, linux

Solution

`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.

Problem

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

Original source