Next: wcstombs, Previous: strtoull, Up: Stdlib

### 2.36 `system`—execute command string

Synopsis

         #include <stdlib.h>
         int system(char *s);

         int _system_r(void *reent, char *s);

Description

Use `system` to pass a command string `*`s to `/bin/sh` on your system, and wait for it to finish executing.

Use “`system(NULL)`” to test whether your system has `/bin/sh` available.

The alternate function `_system_r` is a reentrant version. The extra argument reent is a pointer to a reentrancy structure.

Returns
`system(NULL)` returns a non-zero value if `/bin/sh` is available, and `0` if it is not.

With a command argument, the result of `system` is the exit status returned by `/bin/sh`.

Portability
ANSI C requires `system`, but leaves the nature and effects of a command processor undefined. ANSI C does, however, specify that `system(NULL)` return zero or nonzero to report on the existence of a command processor.

POSIX.2 requires `system`, and requires that it invoke a `sh`. Where `sh` is found is left unspecified.

Supporting OS subroutines required: `_exit`, `_execve`, `_fork_r`, `_wait_r`.