StartProcess

StartProcess["executable"]

executes an external program, yielding a ProcessObject to represent the resulting subprocess.

StartProcess[{"executable",arg1,arg2,}]

executes an external program, passing it the specified arguments argi.

Details

  • StartProcess returns a ProcessObject if the process it specifies can be started; otherwise, it returns $Failed.
  • StartProcess can be used to interact with processes while they are running or to run "background tasks" without blocking the Wolfram Engine.
  • StartProcess returns immediately and does not wait for the started process to complete. Use RunProcess to wait for a process to complete.
  • In StartProcess[{"executable",arg1,arg2,}], the argi are converted to strings using ToString.
  • The Wolfram Engine can communicate with a subprocess represented by a ProcessObject with functions like WriteLine, WriteString, BinaryWrite, ReadLine, ReadString, and BinaryRead.
  • The standard input, output, and error streams can be represented using ProcessConnection.
  • Information about the subprocess can be queried using ProcessStatus and ProcessInformation.
  • The following options can be given:
  • ProcessDirectoryInheritedinitial working directory
    ProcessEnvironmentInheritedenvironment variables to give the subprocess
  • By default, the subprocess will inherit its process directory and environment variables from the Wolfram Engine.
  • If the Wolfram Engine is terminated, the subprocess will be forced to close.
  • If any of the arguments argi are of the form "name"->value, they will be converted into the form "--name=value". If name is a single character, only one dash will be used.

Examples

open allclose all

Basic Examples  (1)

Start the system shell process:

Write a command into the system shell process:

Read the command output:

Check whether the process is running or not:

Write an exit command into the shell process:

Verify the program has actually finished:

Possible Issues  (4)

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

Calling StartProcess with the command and arguments in a single string is not allowed:

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

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

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

Some commands might need to be called using absolute paths:

Interactive Examples  (1)

Create an interactive console in the Wolfram Language. To test this example, first evaluate the cells. Then type any valid shell command in the input box and click the Go button:

Neat Examples  (1)

Start a new WolframKernel process for parallel computation:

Make the kernel process do a long computation and quit:

Read the process output whenever it finishes:

Read any messages sent to the error stream:

Introduced in 2014
 (10.0)