Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ popen(S) — System V/386 Software Development System 3.2.2b

Media Vault

Software Library

Restoration Projects

Artifacts Sought



     POPEN(S)                  UNIX System V                  POPEN(S)



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

     Syntax
          #include <stdio.h>

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

          int pclose (stream)
          FILE *stream;

     Description
          The popen function 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; 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
          A typical call may be:

          char *cmd = "ls *.c";
          FILE *ptr;
          if ((ptr = popen(cmd, "r")) != NULL)
                while (fgets(buf, n, ptr) != NULL)
                        (void) printf("%s ",buf);

          This will print in stdout (see stdio (S)) all the file names
          in the current directory that have a ``.c'' suffix.

     See Also
          pipe(S), wait(S), fclose(S), fopen(S), stdio(S), system(S)

     Diagnostics
          The popen function returns a NULL pointer if files or
          processes cannot be created.

          The pclose function returns -1 if stream is not associated
          with a ``popened'' command.

     Warning
          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, for example, with fflush (see fclose(S)).

     Standards Conformance
          pclose and popen are conformant with:
          AT&T SVID Issue 2, Select Code 307-127;
          and The X/Open Portability Guide II of January 1987.

                                             (printed 6/20/89)



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