Home
Main website
Display Sidebar
Hide Ads
Recent Changes
View Source:
popen(3)
Edit
PageHistory
Diff
Info
LikePages
!!NAME popen, pclose - process I/O !!SYNOPSIS __#include <stdio.h>__ __FILE *popen(const char *__''command''__, const char*__''type''__);__ __int pclose(FILE *__''stream''__);__ !!DESCRIPTION The __popen()__ function opens a process by creating a pipe, forking, and invoking the shell. Since a pipe is by definition unidirectional, the ''type'' argument may specify only reading or writing, not both; the resulting stream is correspondingly read-only or write-only. The ''command'' argument is a pointer to a null-terminated string containing a shell command line. This command is passed to ''/bin/sh'' using the __-c__ flag; interpretation, if any, is performed by the shell. The ''mode'' argument is a pointer to a null-terminated string which must be either `r' for reading or `w' for writing. The return value from __popen()__ is a normal standard I/O stream in all respects save that it must be closed with __pclose()__ rather than __fclose()__. Writing to such a stream writes to the standard input of the command; the command's standard output is the same as that of the process that called __popen()__, unless this is altered by the command itself. Conversely, reading from a ``popened'' stream reads the command's standard output, and the command's standard input is the same as that of the process that called __popen__. Note that output __popen__ streams are fully buffered by default. The __pclose__ function waits for the associated process to terminate and returns the exit status of the command as returned by __wait4__. !!RETURN VALUE The __popen__ function returns __NULL__ if the fork(2) or pipe(2) calls fail, or if it cannot allocate memory. The __pclose__ function returns -1 if __wait4__ returns an error, or some other error is detected. !!ERRORS The __popen__ function does not set ''errno'' if memory allocation fails. If the underlying __fork()__ or __pipe()__ fails, ''errno'' is set appropriately. If the ''mode'' argument is invalid, and this condition is detected, ''errno'' is set to [EINVAL]. If __pclose()__ cannot obtain the child status, ''errno'' is set to [ECHILD]. !!CONFORMING TO POSIX.2 !!BUGS Since the standard input of a command opened for reading shares its seek offset with the process that called __popen()__, if the original process has done a buffered read, the command's input position may not be as expected. Similarly, the output from a command opened for writing may become intermingled with that of the original process. The latter can be avoided by calling fflush(3) before __popen__. Failure to execute the shell is indistinguishable from the shell's failure to execute command, or an immediate exit of the command. The only hint is an exit status of 127. !!HISTORY A __popen()__ and a __pclose()__ function appeared in Version 7 AT&T Unix. !!SEE ALSO fork(2), sh(1), pipe(2), wait4(2), fflush(3), fclose(3), fopen(3), stdio(3), system(3)
4 pages link to
popen(3)
:
ftp(1)
netkit-ftp(1)
pftp(1)
Man3p
This page is a man page (or other imported legacy content). We are unable to automatically determine the license status of this page.