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)