Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ popen(3S) — Dell System V Release 4 Issue 2.2

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)              UNIX System V(C Development Set)               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).




10/89                                                                    Page 1







popen(3S)              UNIX System V(C Development Set)               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                                                                    10/89





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