[Chapter 14] 14.4 Summary of Process Operations
Author: Randal L. Schwartz, Erik Olson & Tom Christiansen
Date: 1999-07-02T01:35:46Z

#

| Chapter 14 Process Management |

## 14.4 Summary of Process Operations

Table 14.1 summarizes the operations that you have for launching a process.

Table 14.1: Summary of Subprocess Operations
Operation | Standard Input | Standard Output | Standard Error | Waited for?
--- | --- | --- | --- | ---
    system()
| Inherited from program | Inherited from program | Inherited from program | Yes
Backquoted string | Inherited from program | Captured as string value | Inherited from program | Yes
`open()` command as filehandle for output | Connected to filehandle | Inherited from program | Inherited from program | Only at time of `close()`
`open()` command as filehandle for input | Inherited from program | Connected to filehandle | Inherited from program | Only at time of `close()`
`fork`, `exec`, `wait`, `waitpid` | Not implemented | Not implemented | Not implemented | Not implemented

The simplest way to create a process is with the `system` function. Standard input, output, and error are unaffected (they're inherited from the Perl process). A backquoted string creates a process, capturing the standard output of the process as a string value for the Perl program. Standard input and standard error are unaffected. Both methods require that the process finish before any more code is executed.

A simple way to get an asynchronous process (one that allows the Perl program to continue before the process is complete) is to open a command as a filehandle, creating a pipe for the command's standard input or standard output. A command opened as a filehandle for reading inherits the standard input and standard error from the Perl program; a command opened as a filehandle for writing inherits the standard output and standard error from the Perl program.

14.3 Using Processes as Filehandles |  | 14.5 Win32::Process