Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

pipe(2)

wait(2)

fclose(3S)

fopen(3S)

stdio(3S)

system(3S)



          POPEN(3S)            INTERACTIVE UNIX System            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
               The popen function creates a pipe between the calling pro-
               gram 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
               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.


          Rev. C Software Development Set                            Page 1





          POPEN(3S)            INTERACTIVE UNIX System            POPEN(3S)



          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, e.g., with fflush [see fclose(3S)].


















































          Rev. C Software Development Set                            Page 2



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