NAME
system
—
pass a command to the shell
SYNOPSIS
#include
<stdlib.h>
int
system
(const
char *string);
DESCRIPTION
The
system
()
function hands the argument string to the command
interpreter sh(1). The calling
process waits for the shell to finish executing the command, ignoring
SIGINT
and SIGQUIT
, and
blocking SIGCHLD
.
If string is
NULL
,
system
()
will return non-zero. Otherwise, system
() returns
the termination status of the shell in the format specified by
waitpid(2).
Note that fork handlers established using
pthread_atfork(3)
are not called when a multithreaded program calls
system
().
RETURN VALUES
If a child process cannot be created, or the termination status of
the shell cannot be obtained, system
() returns -1
and sets errno to indicate the error. If execution of
the shell fails, system
() returns the termination
status for a program that terminates with a call of
exit
(127).
SEE ALSO
STANDARDS
The system
() function conforms to
ANSI X3.159-1989 (“ANSI C89”)
and IEEE Std 1003.2-1992
(“POSIX.2”).
HISTORY
The system
() function first appeared in
Version 6 AT&T UNIX.
CAVEATS
Never supply the system
() function with a
command containing any part of an unsanitized user-supplied string. Shell
meta-characters present will be honored by the sh(1) command interpreter.
It is often simpler to bypass the shell and run an external command using fork(2), execlp(3), and waitpid(2) directly instead of having to sanitize a string for shell consumption.