Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ popen(3s) — DG/UX 4.00

Media Vault

Software Library

Restoration Projects

Artifacts Sought



                                                                popen(3s)



        _________________________________________________________________
        popen, pclose                                          Subroutine
        initiate pipe to/from a process
        _________________________________________________________________


        SYNTAX

        #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.





        DG/UX 4.00                                                 Page 1
               Licensed material--property of copyright holder(s)





                                                                popen(3s)



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

































        DG/UX 4.00                                                 Page 2
               Licensed material--property of copyright holder(s)



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