52 lines
1.4 KiB
Groff
52 lines
1.4 KiB
Groff
|
.\" @(#)popen.3 6.1 (Berkeley) 5/15/85
|
||
|
.\"
|
||
|
.TH POPEN 3 "May 15, 1985"
|
||
|
.AT 3
|
||
|
.SH NAME
|
||
|
popen, pclose \- initiate I/O to/from a process
|
||
|
.SH SYNOPSIS
|
||
|
.nf
|
||
|
.ft B
|
||
|
#include <stdio.h>
|
||
|
|
||
|
FILE *popen(const char *command, const char *type)
|
||
|
int pclose(FILE *stream)
|
||
|
.SH DESCRIPTION
|
||
|
The arguments to
|
||
|
.B 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.
|
||
|
.PP
|
||
|
A stream opened by
|
||
|
.B popen
|
||
|
should be closed by
|
||
|
.BR pclose ,
|
||
|
which waits for the associated process to terminate
|
||
|
and returns the exit status of the command.
|
||
|
.PP
|
||
|
Because open files are shared, a type "r" command may be used as an input
|
||
|
filter, and a type "w" as an output filter.
|
||
|
.SH "SEE ALSO"
|
||
|
.BR pipe (2),
|
||
|
.BR fopen (3),
|
||
|
.BR fclose (3),
|
||
|
.BR system (3),
|
||
|
.BR wait (2),
|
||
|
.BR sh (1).
|
||
|
.SH DIAGNOSTICS
|
||
|
.B Popen
|
||
|
returns a null pointer if files or processes cannot be created, or the shell
|
||
|
cannot be accessed.
|
||
|
.SH BUGS
|
||
|
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
|
||
|
.BR fflush ,
|
||
|
see
|
||
|
.BR fclose (3).
|