Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ pclose(3s) — 4D1 2.0

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)



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

     SYNOPSIS
          #include <stdio.h>

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

          int pclose (stream)
          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; 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 (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).

     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.



     Page 1                                        (last mod. 8/20/87)





     POPEN(3S)                                               POPEN(3S)



     WARNING
          If the original and ``popened'' processes concurrently read
          or write a common file, neither should use buffered I/O,
          because the buffering gets all mixed up.  Problems with an
          output filter may be forestalled by careful buffer flushing,
          e.g. with fflush [see fclose(3S)].

     ORIGIN
          AT&T V.3














































     Page 2                                        (last mod. 8/20/87)



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