POPEN(3)

NAME
13.1 `popen', `pclose'--tie a stream to a command string

SYNOPSIS
     #include <stdio.h>
     FILE *popen(const char *S, const char *MODE);
     int pclose(FILE *F);

DESCRIPTION
Use `popen' to create a stream to a child process executing a command string `*S' as processed by `/bin/sh' on your system. The argument MODE must start with either ``r'', where the stream reads from the child's `stdout', or ``w'', where the stream writes to the child's `stdin'. As an extension, MODE may also contain ``e'' to set the close-on-exec bit of the parent's file descriptor. The stream created by `popen' must be closed by `pclose' to avoid resource leaks.
   Streams created by prior calls to `popen' are not visible in subsequent `popen' children, regardless of the close-on-exec bit.
   Use "`system(NULL)'" to test whether your system has `/bin/sh' available.

RETURNS
`popen' returns a file stream opened with the specified MODE, or `NULL' if a child process could not be created. `pclose' returns -1 if the stream was not created by `popen' or if the application used `wait' or similar to steal the status; otherwise it returns the exit status of the child which can be interpreted in the same manner as a status obtained by `waitpid'.

PORTABILITY
POSIX.2 requires `popen' and `pclose', but only specifies a mode of just `r' or `w'. Where `sh' is found is left unspecified.
   Supporting OS subroutines required: `_exit', `_execve', `_fork_r', `_wait_r', `pipe', `fcntl', `sbrk'.

SEE ALSO
popen is part of the library. The full documentation for is maintained as a Texinfo manual. If info and are properly installed at your site, the command

    info

will give you access to the complete manual.