File:  [CSRG BSD Unix] / 43BSDReno / lib / libc / gen / popen.3
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:12:55 2018 UTC (8 years, 1 month ago) by root
Branches: MAIN, BSD
CVS tags: HEAD, BSD43reno
BSD 4.3reno

.\"	@(#)popen.3	6.2 (Berkeley) 12/7/88
.\"
.TH POPEN 3 "December 7, 1988"
.AT 3
.SH NAME
popen, pclose \- initiate I/O to/from a process
.SH SYNOPSIS
.B #include <stdio.h>
.PP
.SM
.B FILE
.B *popen(command, type)
.br
.B char *command, *type;
.PP
.B pclose(stream)
.br
.SM
.B FILE
.B *stream;
.SH DESCRIPTION
The arguments to 
.I 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
.I popen
should be closed by
.IR 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"
sh(1), pipe(2), wait4(2), fclose(3), fopen(3), system(3)
.SH DIAGNOSTICS
.I Popen
returns a null pointer if files or processes cannot be created, or the shell 
cannot be accessed.
.PP
.I Pclose
returns \-1 if
.I stream
is not associated with a `popened' command, or if
.I stream
already `pclosed', or
.IR wait (4)
returns an error.
.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
.I fflush,
see
.IR fclose (3).
.LP
.I Popen
always calls
.IR sh ,
never calls
.IR csh .

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.