Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ popen(3s) — NEWS-os 5.0.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

pipe(2)

wait(2)

fclose(3S)

fopen(3S)

stdio(3S)

system(3S)



popen(3S)               LIBRARY 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.





                                                                1





popen(3S)               LIBRARY 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").



































                                                                2



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