Files
2024-02-19 00:21:39 -05:00

40 lines
1.5 KiB
Groff

NAME
popen, pclose - initiate pipe to/from a process
SYNTAX
#include <stdio.h>
FILE *popen (command, type)
char *command, *type;
int pclose (stream)
FILE *stream;
DESCRIPTION
The arguments to popen are pointers to null-terminated
strings containing, respectively, a shell command line and
an I/O mode, either r for reading or w for writing. Popen
creates a pipe between the calling program and the command
to be executed. 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.
SEE ALSO
pipe(2), wait(2), fclose(3S), fopen(3S), system(3S).
DIAGNOSTICS
Popen returns a NULL pointer if files or processes cannot be
created, or if the shell cannot be accessed.
Pclose returns -1 if stream is not associated with a
``popened'' command.
BUGS
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).