Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ () — Motorola System V 88k Release 3.2 Version 1.2C

Media Vault

Software Library

Restoration Projects

Artifacts Sought



  POPEN(3S)       (C Programming Language Utilities)      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


  Page 1                                                   May 1989


















  POPEN(3S)       (C Programming Language Utilities)      POPEN(3S)



       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.

  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                                                   May 1989
















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