38 Processes
In the terminology of operating systems, a process is a space in which a program can execute. Emacs runs in a process. Emacs Lisp programs can invoke other programs in processes of their own. These are called subprocesses or child processes of the Emacs process, which is their parent process.
A subprocess of Emacs may be synchronous or asynchronous, depending on how it is created. When you create a synchronous subprocess, the Lisp program waits for the subprocess to terminate before continuing execution. When you create an asynchronous subprocess, it can run in parallel with the Lisp program. This kind of subprocess is represented within Emacs by a Lisp object which is also called a “process". Lisp programs can use this object to communicate with the subprocess or to control it. For example, you can send signals, obtain status information, receive output from the process, or send input to it.
In addition to processes that run programs, Lisp programs can open connections of several types to devices or processes running on the same machine or on other machines. The supported connection types are: TCP and UDP network connections, serial port connections, and pipe connections. Each such connection is also represented by a process object.
function
processp object​
This function returns t
if object
represents an Emacs process object, nil
otherwise. The process object can represent a subprocess running a program or a connection of any supported type.
In addition to subprocesses of the current Emacs session, you can also access other processes running on your machine. See System Processes.
• Subprocess Creation |   | Functions that start subprocesses. |
• Shell Arguments |   | Quoting an argument to pass it to a shell. |
• Synchronous Processes |   | Details of using synchronous subprocesses. |
• Asynchronous Processes |   | Starting up an asynchronous subprocess. |
• Deleting Processes |   | Eliminating an asynchronous subprocess. |
• Process Information |   | Accessing run-status and other attributes. |
• Input to Processes |   | Sending input to an asynchronous subprocess. |
• Signals to Processes |   | Stopping, continuing or interrupting an asynchronous subprocess. |
• Output from Processes |   | Collecting output from an asynchronous subprocess. |
• Sentinels |   | Sentinels run when process run-status changes. |
• Query Before Exit |   | Whether to query if exiting will kill a process. |
• System Processes |   | Accessing other processes running on your system. |
• Transaction Queues |   | Transaction-based communication with subprocesses. |
• Network |   | Opening network connections. |
• Network Servers |   | Network servers let Emacs accept net connections. |
• Datagrams |   | UDP network connections. |
• Low-Level Network |   | Lower-level but more general function to create connections and servers. |
• Misc Network |   | Additional relevant functions for net connections. |
• Serial Ports |   | Communicating with serial ports. |
• Byte Packing |   | Using bindat to pack and unpack binary data. |