NAME popen, pclose - initiate pipe to/from a process SYNTAX #include 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).