POPEN(3S)                                               POPEN(3S)

     NAME
          popen, pclose - initiate IO 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
          IO mode, either "r" for reading or "w" for writing.  It cre-
          ates 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), fopen(3), fclose(3), system(3), wait(2)

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

          Pclose returns -1 if there is no process to wait for.

     BUGS
          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 calling
          fflush; see fclose(3).