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