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).
 |