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.
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 and Options
- 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:
-
ProcessDirectory Inherited initial working directory ProcessEnvironment Inherited environment 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 all close allBasic Examples (1)
Start the system shell process:
process = StartProcess[$SystemShell]Write a command into the system shell process:
WriteLine[process, "echo example line"];ReadString[process, EndOfBuffer]Check whether the process is running or not:
ProcessStatus[process]Write an exit command into the shell process:
WriteLine[process, "exit"];Verify the program has actually finished:
ProcessStatus[process]Possible Issues (4)
The right way to call StartProcess for a program plus its arguments is using a list:
StartProcess[{$SystemShell, "-c", "echo example line"}]Calling StartProcess with the command and arguments in a single string is not allowed:
StartProcess[StringJoin[{$SystemShell, " -c \"echo example line\""}]]Also, calling StartProcess with the program arguments as arguments for StartProcess is not allowed:
StartProcess[$SystemShell, "-c", "echo example line"]Special symbols like ~ and * are not converted using shell expansion, because StartProcess skips the shell:
StartProcess[{"diff", "~/file1", "~/file2"}]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):
StartProcess[{"echo", "this line only works on Unix systems like MacOS and Linux"}]Some commands might need to be called using absolute paths:
StartProcess[{"/bin/echo", "example"}]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:
command = "";
process = StartProcess[$SystemShell];
Pause[.1];
processString = ReadString[process, EndOfBuffer];Column[{
Pane[Dynamic[processString], ImageSize -> {800, 400}, Scrollbars -> True, ScrollPosition -> {-1, -1}],
InputField[Dynamic[command], String],
Button["Go!", WriteLine[process, command];
Pause[.1];
processString = processString <> ReadString[process, EndOfBuffer];
]}]Neat Examples (1)
Start a new WolframKernel process for parallel computation:
path = FileNames["WolframKernel" | "WolframKernel.exe", $InstallationDirectory, 3]process = StartProcess[path]Make the kernel process do a long computation and quit:
Do[WriteLine[process, "42^42"], {5}]WriteLine[process, "Quit[]"];Read the process output whenever it finishes:
string = ReadString[process]Read any messages sent to the error stream:
ReadString[ProcessConnection[process, "StandardError"]]See Also
StartExternalSession RunProcess KillProcess ProcessConnection LaunchKernels
Function Repository: ProcessRunningQ
History
Text
Wolfram Research (2014), StartProcess, Wolfram Language function, https://reference.wolfram.com/language/ref/StartProcess.html.
CMS
Wolfram Language. 2014. "StartProcess." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/StartProcess.html.
APA
Wolfram Language. (2014). StartProcess. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/StartProcess.html
BibTeX
@misc{reference.wolfram_2026_startprocess, author="Wolfram Research", title="{StartProcess}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/StartProcess.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_startprocess, organization={Wolfram Research}, title={StartProcess}, year={2014}, url={https://reference.wolfram.com/language/ref/StartProcess.html}, note=[Accessed: 12-June-2026]}