Starts a program. Syntax:

open [elevated] process <appName> [for [[<encoding>] text | binary] {read | write | update | neither}]


open process "/usr/bin/snapfile"
open process it for read
command startSlave pProcess
   open process pProcess for text update
   send "monitorSlave pProcess" to me in 50 millisecs
end startSlave

Use the open process command to start up a process you want to either send data to or get data from or both.

Usually, you should use the open process command only to start up programs that run in the background, without any user interaction. When you are finished with the process, use the close process command to cause it to exit.

You can't pass parameter with open process, so you have to write the process with options on a file and launch it, for example on Windows:

put "ping  -t" into URL "file:myProcess.bat"
open process "myProcess.bat" for text read

You can optionally specify either text or binary mode. If you specify text mode, when you use the write to process command, any line feed and return characters are translated to the appropriate end-of-line marker for the current operating system before being written to the process. (The end-of-line marker on Mac OS and OS X systems is a return character; on Unix, a line feed; on Windows, a CRLF.) If you specify binary mode, return and line feed characters are not translated. If you don't specify a mode, the process is opened in text mode.

Use the read form to open the process for reading. If the process is opened for reading, you can use the read from process command to examine its output, but you can't send data to it.

Use the write form to open the process for writing. If the process is opened for writing, you can use the write to process command to send input data to it.

Use the update form to open the file for both reading and writing. If the file is opened for update, you can use both the read from process and write to process commands to send input to it or get output from it.

Use the neither form to run the process without reading data from it or sending data to it. (Using this form is equivalent to using the launch command to start up a program.) Processes opened with the neither form will quit automatically when finished running.

When you quit the application, processes opened with the read, write, or update forms are quit automatically.

On OS X systems, you can use the open process command to start up an application, but not a Unix process. To work with a Unix process, use the shell function instead.

The possibility of choosing an encoding when opening a process for a text operation was added in 7.0. It follows the encodings available in the functions textEncode and textDecode.

Sometimes it is necessary to perform operations on the local machine as an administrator, and a typical pattern for a GUI application doing this is for it to prompt for authentication at certain points.

Modern operating systems do not permit a process to elevate itself, nor grant itself increased privilege. Instead, they only allow a running process to launch another process with increased privilege. Therefore, in order to support this, in version 4.5 a new form of the open process command was introduced that can launch a slave process with elevated permissions:

open elevated process process [ for [ text | binary ] ( read | write |
update | neither ) ]

This form operates identically to the normal version, except that engine will ask the system to launch the given process with admin/root privileges.

The standard way for a GUI application that needs to perform privileged operations to be structured is to split the application into two parts: a GUI front-end that interacts with the user, and a command-line back-end that is run with elevated permissions. These two parts can then talk to each other using a standard master-slave approach, or some other form of IPC such as sockets


  • appName: The location and name of the program you want to open. You can run onlyone instantiation of a given program at one time. The appName can be anyprogram on the system.
  • encoding:
  • Description:Use the open process command to start up a process you want to either send data to or get data from or both.

See also: read from process (command), write to process (command), screenName (function), hideConsoleWindows (property), Close process

Community content is available under CC-BY-SA unless otherwise noted.