POPEN(3S) — HP-UX
NAME
popen, pclose − initiate pipe I/O to/from a process
SYNOPSIS
#include <stdio.h>
FILE ∗popen (command, type)
char ∗command, ∗type;
int pclose (stream)
FILE ∗stream;
DESCRIPTION
Popen creates a pipe between the calling program and the command to be executed.
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 returns 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 command as an output filter.
RETURN VALUE
Popen returns a NULL pointer if files or processes cannot be created. The success of the command execution can be checked by examining the return value of pclose.
Pclose returns −1 if stream is not associated with a “popened” command.
WARNINGS
If the original and “popened” processes concurrently read or write a common file, neither should use buffered I/O, because the buffering will not work properly. Problems with an output filter may be forestalled by careful buffer flushing, e.g., with fflush; see fclose(3S).
SEE ALSO
pipe(2), wait(2), fclose(3S), fopen(3S), system(3S).
Hewlett-Packard Company — Version B.1, May 11, 2021