#include <stdlib.h>int system(const char *string);
The system() function causes string to be given to the shell as input, as if string had been typed as a command at a terminal. The invoker waits until the shell has completed, then returns the exit status of the shell in the format specified by waitpid(2).
If string is a null pointer, system() checks if the shell exists and is executable. If the shell is available, system() returns a non-zero value; otherwise, it returns 0. If the application is standard-conforming (see standards(5)), system() uses /usr/xpg4/bin/sh (see ksh(1)); otherwise system() uses /usr/bin/sh (see sh(1)).
The system() function executes vfork(2) to create a child process that in turn invokes one of the exec family of functions (see exec(2)) on the shell to execute string. If vfork() or the exec function fails, system() returns -1 and sets errno to indicate the error.
The system() function fails if:
The system-imposed limit on the total number of processes under execution by a single user would be exceeded.
The system() function was interrupted by a signal.
The new process requires more memory than is available.
The system() function manipulates the signal handlers for
SIGCHLD. For this reason it is not safe to call system() in a multithreaded process. Concurrent calls to system() will interfere destructively with the disposition of these signals, even if they are not manipulated by other threads in the application. See popen(3C) for a replacement for system() that is thread-safe.
See attributes(5) for descriptions of the following attributes:
|ATTRIBUTE TYPE||ATTRIBUTE VALUE|