SYSTEM(3)              FreeBSD Library Functions Manual              SYSTEM(3)

NAME

     system - pass a command to the shell

LIBRARY

     Standard C Library (libc, -lc)

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 a NULL pointer, system() will return non-zero if the command
     interpreter sh(1) is available, and zero if it is not.

RETURN VALUES

     The system() function returns the exit status of the shell as returned by
     waitpid(2), or -1 if an error occurred when invoking fork(2) or
     waitpid(2).  If the child process fails to execute the shell, it will
     terminate with an exit code of 127 and system will return the
     corresponding exit status.

SEE ALSO

     sh(1), execve(2), fork(2), waitpid(2), popen(3), posix_spawn(3)

STANDARDS

     The system() function conforms to ISO/IEC 9899:1990 ("ISO C90") and is
     expected to be IEEE Std 1003.2 ("POSIX.2") compatible.

SECURITY CONSIDERATIONS

     The system() function is easily misused in a manner that enables a
     malicious user to run arbitrary command, because all meta-characters
     supported by sh(1) would be honored.  User supplied parameters should
     always be carefully sanitized before they appear in string.

FreeBSD 15.1-STABLE-HBSD       February 24, 2026                     SYSTEM(3)