Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

pipe(2)

wait(2)

fclose(3S)

fopen(3S)

stdio(3S)

system(3S)



popen(3S)            STANDARD I/O FUNCTIONS             popen(3S)



NAME
     popen, pclose - initiate pipe to/from a process

SYNOPSIS
     #include <stdio.h>

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

     int pclose (FILE *stream);

DESCRIPTION
     popen creates a pipe between the  calling  program  and  the
     command to be executed.  The arguments to popen are pointers
     to null-terminated strings.  command  consists  of  a  shell
     command  line.  type is an I/O mode, either r for reading or
     w for writing.  The value returned is a stream pointer  such
     that  one can write to the standard input of the command, if
     the I/O mode is w,  by  writing  to  the  file  stream  [see
     intro(3)];  and one can read from the standard output of the
     command, if the I/O mode is r,  by  reading  from  the  file
     stream.

     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.

EXAMPLE
     Here is an example of a typical call:

          #include <stdio.h>
          #include <stdlib.h>

          main()
          {
               char *cmd = "/usr/bin/ls *.c";
               char buf[BUFSIZ];
               FILE *ptr;

               if ((ptr = popen(cmd, "r")) != NULL)
                    while (fgets(buf, BUFSIZ, ptr) != NULL)
                         (void) printf("%s", buf);
               return 0;
          }

     This  program  will  print  on  the  standard  output   [see
     stdio(3S)]  all the file names in the current directory that
     have a .c suffix.





          Last change: C Programming Language Utilities         1





popen(3S)            STANDARD I/O FUNCTIONS             popen(3S)



SEE ALSO
     pipe(2),   wait(2),   fclose(3S),   fopen(3S),    stdio(3S),
     system(3S).

DIAGNOSTICS
     popen returns a null pointer if files or processes cannot be
     created.

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

NOTES
     If the original and popened processes concurrently  read  or
     write a common file, neither should use buffered I/O.  Prob-
     lems with an output filter may  be  forestalled  by  careful
     buffer flushing, e.g., with fflush [see fclose(3S)].

     A security hole exists through the IFS and PATH  environment
     variables.   Full  pathnames  should be used (or PATH reset)
     and IFS should be set to space and tab (" \t").



































          Last change: C Programming Language Utilities         2



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