# popen(3)

## NAME

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

## SYNOPSIS

         #include <stdio.h>

         FILE *popen(const char *command, const char *type)
         int pclose(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), sh(1).

## DIAGNOSTICS

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

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