Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

pipe(2)

wait(2)

fclose(3S)

fopen(3S)

system(3S)

POPEN(3S)  —  UNIX 3.0

NAME

popen, pclose − initiate I/O to/from a process

SYNOPSIS

#include <stdio.h>

FILE ∗popen (command, type)
char ∗command, ∗type;

int pclose (stream)
FILE ∗stream;

DESCRIPTION

The arguments to popen are pointers to null-terminated strings containing, respectively, a shell command line and an I/O mode, either r for reading or w for writing.  Popen creates a pipe between the calling process and the command to be executed.  The value returned is a stream pointer that can be used (as appropriate) to write to the standard input of the command or read from its standard output. 

A stream opened by popen should be closed by pclose, which waits for the associated process to terminate and returns the exit status of the command.

Because open files are shared, a type r command may be used as an input filter, and a type w as an output filter. 

SEE ALSO

pipe(2), wait(2), fclose(3S), fopen(3S), system(3S). 

DIAGNOSTICS

Popen returns a null pointer if files or processes cannot be created, or if the shell cannot be accessed. 

Pclose returns −1 if stream is not associated with a “popened” command.

BUGS

Only one stream opened by popen can be in use at once. 

Buffered reading before opening an input filter may leave the standard input of that filter mispositioned.  Similar problems with an output filter may be forestalled by careful buffer flushing, e.g. with fflush; see fclose(3S).

May 16, 1980

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026