Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ popen(3s) — Atari System V ue12

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

pipe(2)

wait(2)

fclose(3S)

fopen(3S)

stdio(3S)

system(3S)

popen(3S)





   popen(3S)           (C Programming Language Utilities)            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.

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



   7/91                                                                 Page 1









   popen(3S)           (C Programming Language Utilities)            popen(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.  Problems 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").







































   Page 2                                                                 7/91





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