SYSTEM(3) | Library Functions Manual | SYSTEM(3) |
system
— pass a
command to the shell
#include
<stdlib.h>
int
system
(const
char *string);
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
().
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).
The system
() function conforms to
ANSI X3.159-1989 (“ANSI C89”)
and IEEE Std 1003.2-1992
(“POSIX.2”).
The system
() function first appeared in
Version 6 AT&T UNIX.
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.
February 5, 2016 | OpenBSD-6.1 |