Coprocesses

A coprocess is a shell command that runs asynchronously in a subshell, connected to the originating shell by a two-way pipe. Set up a coprocess with the coproc reserved word:

coproc [NAME] command [redirections]

The reserved word coproc sets up the pipe to communicate with command and runs command in the background. NAME is the name of the coprocess (COPROC by default). If command is a complex command, NAME is optional; with a simple command, NAME must not be given and the default is used. If any redirections are specified, they are set up after the pipe has been set up.

The coprocess establishes an array with two values: NAME[0] contains the file descriptor for command output and NAME[1] contains the file descriptor for command input. The variable NAME_PID contains the process id of the coprocess. The return status is the exit status of command. You can use the wait built-in command to wait for the output of command.

Get Linux in a Nutshell, 6th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.