man(1) Manual page archive


     POPEN(3S)                                               POPEN(3S)

     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 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 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 may be forestalled by careful
          buffer flushing, e.g. with fflush, see fclose(3).