Differences between version 4 and revision by previous author of popen(3).
Other diffs: Previous Major Revision, Previous Revision, or view the Annotated Edit History
Newer page: | version 4 | Last edited on Tuesday, July 22, 2003 10:51:33 pm | by CraigBox | Revert |
Older page: | version 3 | Last edited on Tuesday, July 22, 2003 3:26:24 pm | by SamJansen | Revert |
@@ -1,16 +1,15 @@
!!NAME
popen, pclose - process I/O
-!!SYNOPSIS
+!!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
@@ -46,61 +45,42 @@
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__.
-If __pclose()__ cannot obtain the child status,
-''errno'' is set to __ECHILD__.
!!CONFORMING TO
+POSIX.2
-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__.
-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
.
-
-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.
-A __popen()__ and a __pclose()__ function appeared in
-Version 7 AT__
!!SEE ALSO
-
-
fork(2), sh(1), pipe(2),
-
wait4(2), fflush(3), fclose(3),
-
fopen(3), stdio(3),
-
system(3)
-----
+fork(2), sh(1), pipe(2), wait4(2), fflush(3), fclose(3), fopen(3), stdio(3), system(3)