---
name: "system"
section: "3"
platform: "macos"
package: "Libc"
version: "1752.120.2"
release: "macOS 26.5"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/system"
---

# system(3)

pass a command to the shell

## NAME

**system** – pass a command to the shell

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<stdlib.h\>**

*int*\

**system**(*const char \*command*);

## DESCRIPTION

The **system**() function hands the argument *command* to the command interpreter [sh(1)](/sh/1.md). The calling process waits for the shell to finish executing the command, ignoring SIGINT and SIGQUIT, and blocking SIGCHLD.

If *command* is a NULL pointer, **system**() will return non-zero if the command interpreter [sh(1)](/sh/1.md) 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)](/waitpid/2.md), or -1 if an error occurred when invoking [fork(2)](/fork/2.md) or [waitpid(2)](/waitpid/2.md). A return value of 127 means the execution of the shell failed.

## SEE ALSO

[sh(1)](/sh/1.md), [execve(2)](/execve/2.md), [fork(2)](/fork/2.md), [waitpid(2)](/waitpid/2.md), [popen(3)](/popen/3.md)

## STANDARDS

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