Share via

system, _wsystem

Executes a command.


This API cannot be used in applications that execute in the Windows Runtime. For more information, see CRT functions not supported in Universal Windows Platform apps.


int system(
   const char *command
int _wsystem(
   const wchar_t *command


The command to be executed.

Return value

If command is NULL and the command interpreter is found, returns a nonzero value. If the command interpreter isn't found, returns 0 and sets errno to ENOENT. If command isn't NULL, system returns the value that is returned by the command interpreter. It returns the value 0 only if the command interpreter returns the value 0. A return value of -1 indicates an error, and errno is set to one of the following values:

Value Description
E2BIG The argument list (which is system-dependent) is too large.
ENOENT The command interpreter can't be found.
ENOEXEC The command-interpreter file can't be executed because the format isn't valid.
ENOMEM Not enough memory is available to execute command; or available memory has been corrupted; or a non-valid block exists, which indicates that the calling process has been allocated incorrectly.

For more information about return codes, see errno, _doserrno, _sys_errlist, and _sys_nerr.


The system function passes command to the command interpreter, which executes the string as an operating-system command. system uses the COMSPEC and PATH environment variables to locate the command-interpreter file CMD.exe. If command is NULL, the function just checks whether the command interpreter exists.

You must explicitly flush, by using fflush or _flushall, or close any stream before you call system.

_wsystem is a wide-character version of system; the command argument to _wsystem is a wide-character string. These functions behave identically otherwise.

By default, this function's global state is scoped to the application. To change this behavior, see Global state in the CRT.

Generic-text routine mappings

TCHAR.H routine _UNICODE and _MBCS not defined _MBCS defined _UNICODE defined
_tsystem system system _wsystem


Routine Required header
system <process.h> or <stdlib.h>
_wsystem <process.h> or <stdlib.h> or <wchar.h>

For more compatibility information, see Compatibility.


This example uses system to TYPE a text file.

// crt_system.c

#include <process.h>

int main( void )
   system( "type crt_system.txt" );

Input: crt_system.txt

Line one.
Line two.


Line one.
Line two.

See also

Process and environment control
_exec, _wexec functions
exit, _Exit, _exit
_spawn, _wspawn functions