RunProcess

RunProcess["command"]

runs the specified external command, returning information on the outcome.

RunProcess[{"command",arg1,arg2,}]

runs the specified command, with command-line arguments argi.

RunProcess[command,"prop"]

returns only the specified property.

RunProcess[command,prop,input]

feeds the specified initial input to the command.

Details

  • RunProcess blocks until the process it starts has finished.
  • In RunProcess[command,prop,input], input is automatically converted to a string using ToString. The same is true for the argi in RunProcess[{command,arg1,},].
  • Typical possible properties to return include:
  • "ExitCode"the exit code for the process
    "StandardOutput"data sent to standard output, as a string
    "StandardError"data sent to standard error, as a string
    Allan association of all properties (default)
  • RunProcess has the following options:
  • ProcessDirectoryInheritedinitial working directory
    ProcessEnvironmentInheritedenvironment variables to supply
  • By default, the subprocess will inherit its process directory and environment variables from the Wolfram Engine.

Examples

open allclose all

Basic Examples  (4)

Run a simple external command:

Run a command, and get back only what it writes to the standard output channel:

Give a command-line option to the function:

Equivalent command on Windows:

Run a command, and get back only its exit code:

Scope  (2)

Run the command-line console and a couple of commands inside it, then quit it:

Run the same program with the same input, but retrieve only its standard output:

Possible Issues  (4)

The right way to call RunProcess for a program plus its arguments is using a list:

Calling RunProcess with the command and arguments in a single string does not work:

Also, calling RunProcess with the program arguments as arguments for RunProcess is not allowed:

Special symbols like ~ and * are not converted using shell expansion because RunProcess skips the shell:

Shell commands like dir and echo cannot be called directly on Windows because they are not binaries (however, they are binaries on Unix systems):

Some commands might need to be called using absolute paths:

Introduced in 2014
 (10.0)