Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ popen(3S) — sys5 — Apollo Domain/OS SR10.4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

pipe(2)

wait(2)

fclose(3S)

fopen(3S)

stdio(3S)

system(3S)

POPEN(3S)                            SysV                            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.

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.

ERRORS
     The pclose function fails if

     [ECHILD]  The status of the child process could not be obtained.

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

SEE ALSO
     pipe(2), wait(2), fclose(3S), fopen(3S), stdio(3S), system(3S).

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