# Process Management And Interprocess Communication

This chapter describes the NSPR routines that deal with processes. A
process is an instance of a program. NSPR provides routines to create a
new process and to wait for the termination of another process.

NSPR does not provide an equivalent of the Unix `fork()`. The
newly-created process executes its program from the beginning. A new
process can inherit specified file descriptors from its parent, and the
parent can redirect the standard I/O streams of the child process to
specified file descriptors.

Note that the functions described in this chapter are not available for
MacOS or Win16 operating systems.

(process-management-types-and-constants)=

## Process Management Types and Constants

The types defined for process management are:

> - {ref}`PRProcess`
> - {ref}`PRProcessAttr`

(process-management-functions)=

## Process Management Functions

The process manipulation function fall into these categories:

- [Setting the Attributes of a New
  Process](#Setting_the_Attributes_of_a_New_Process)
- [Creating and Managing
  Processes](#Creating_and_Managing_Processes)

(setting-the-attributes-of-a-new-process)=

### Setting the Attributes of a New Process

The functions that create and manipulate attribute sets of new processes
are:

> - {ref}`PR_NewProcessAttr`
> - `PR_ResetProcessAttr`
> - `PR_DestroyProcessAttr`
> - `PR_ProcessAttrSetStdioRedirect`
> - `PR_ProcessAttrSetCurrentDirectory`
> - `PR_ProcessAttrSetInheritableFD`

(creating-and-managing-processes)=

### Creating and Managing Processes

The functions that create and manage processes are:

> - `PR_CreateProcess`
> - `PR_DetachProcess`
> - `PR_WaitProcess`
> - `PR_KillProcess`
