popen, pclose - initiate I/O to/from a process
FILE *popen(const char *command, const char *type)
int pclose(FILE *stream)
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. It creates a pipe between the calling process and
the command to be executed. The value returned is a stream pointer that
can be used (as appropriate) to write to the standard input of the
command or read from its standard output.
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
Because open files are shared, a type "r" command may be used as an input
filter, and a type "w" as an output filter.
pipe(2), fopen(3), fclose(3), system(3), wait(2), sh(1).
Popen returns a null pointer if files or processes cannot be created, or
the shell cannot be accessed.
Buffered reading before opening an input filter may leave the standard
input of that filter mispositioned. Similar problems with an output
filter may be forestalled by careful buffer flushing, for instance, with
fflush, see fclose(3).