The system() function is the simplest; it takes a command line, the same as you'd type it at a shell prompt, and executes it.
In fact, system() actually starts up a shell to handle the command that you want to perform.
The editor that I'm using to write this book makes use of the system() call. When I'm editing, I may need to shell out, check out some samples, and then come back into the editor, all without losing my place. In this editor, I may issue the command :!pwd for example, to display the current working directory. The editor runs this code for the :!pwd command:
system ("pwd");
Is system() suited for everything under the sun? Of course not, but it's useful for a lot of your process-creation requirements.