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

     #include <stdio.h>

     FILE *popen(const char *command, const char *type)
     int pclose(FILE *stream)

     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

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

     pipe(2), fopen(3), fclose(3), system(3), wait(2), sh(1).

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

     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, for instance,  with
     fflush, see fclose(3).