@node popen, unix @subheading Syntax @example #include FILE *popen(const char *program, const char *mode); @end example @subheading Description This function executes the named @code{program} and attaches either its input stream or its output stream to the returned file. While the file is open, the calling program can write to the program (if the program was open for writing) or read the program's output (if the program was opened for reading). When the program is done, or if you have no more input for it, pass the file pointer to @code{pclose} (@pxref{pclose}), which terminates the program. Since MS-DOS does not support multitasking, this function actually runs the entire program when the program is opened for reading, and stores the output in a temporary file. @code{pclose} then removes that file. Similarly, when you open a program for writing, a temp file holds the data and @code{pclose} runs the entire program. The @var{mode} is the same as for @code{fopen} (@pxref{fopen}). @subheading Return Value An open file which can be used to read the program's output or write to the program's input. @subheading Portability @portability !ansi, posix @subheading Example @example FILE *p = popen("dir", "r"); read_program(p); pclose(p); @end example @c ---------------------------------------------------------------------- @node pclose, unix @subheading Syntax @example #include int pclose(FILE *pipe); @end example @subheading Description This function closes a pipe opened with @code{popen} (@pxref{popen}). Note that since MS-DOS is not multitasking, this function will actually run the program specified in @code{popen} if the pipe was opened for writing. @subheading Return Value Zero on success, nonzero on failure. @subheading Portability @portability !ansi, posix @subheading Example @example FILE *f = popen("sort", "w"); write_to_pipe(f); pclose(f); @end example