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-SVR3)      RISC/os Reference Manual       POPEN(3S-SVR3)



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.



                        Printed 11/19/92                   Page 1





POPEN(3S-SVR3)      RISC/os Reference Manual       POPEN(3S-SVR3)



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)].

















































 Page 2                 Printed 11/19/92



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