Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

pipe(2)

fopen(3S)

fclose(3S)

system(3)

wait(2)

sh(1)

POPEN(3)                             BSD                              POPEN(3)



NAME
     popen, pclose - initiate I/O to/from a process

SYNOPSIS
     #include <stdio.h>

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

     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.  It 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 can be used as an input
     filter, and a type "w" as an output filter.

SEE ALSO
     pipe(2), fopen(3S), fclose(3S), system(3), wait(2), sh(1)

DIAGNOSTICS
     popen returns a NULL pointer if files or processes cannot be created, or
     the shell cannot be accessed.

     pclose returns -1 if stream is not associated with a popened command.

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

     popen always calls sh; it never calls csh.

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