Annotation of researchv10dc/man/man3/popen.3, revision 1.1.1.1

1.1       root        1: .TH POPEN 3S
                      2: .CT 2 comm_proc
                      3: .SH NAME
                      4: popen, ppopen, vepopen, pclose \(mi open a pipe to/from a process
                      5: .SH SYNOPSIS
                      6: .nf
                      7: .B #include <stdio.h>
                      8: .PP
                      9: .B FILE *popen(command, type)
                     10: .B char *command, *type;
                     11: .PP
                     12: .B FILE *ppopen(command, type)
                     13: .B char *command, *type;
                     14: .PP
                     15: .B FILE *vepopen(command, type, args, env)
                     16: .B char *command, *type, **args, **env;
                     17: .PP
                     18: .B int pclose(stream)
                     19: .B FILE *stream;
                     20: .fi
                     21: .SH DESCRIPTION
                     22: The first argument to
                     23: .I popen
                     24: is a pointer to a null-terminated string
                     25: containing a command line for
                     26: .IR sh (1).
                     27: .I Type
                     28: is as in
                     29: .IR fopen (3).
                     30: .I Popen
                     31: creates a pipe between
                     32: the calling process and
                     33: the command and returns
                     34: a stream pointer that
                     35: can be used to write to the standard input
                     36: of the command or to read from the standard output.
                     37: .PP
                     38: .I Ppopen
                     39: uses the
                     40: .B -p
                     41: shell flag to restrict the environment of the shell.
                     42: Both
                     43: .I popen
                     44: and
                     45: .I ppopen
                     46: set the effective userid to the real userid
                     47: before calling the shell.
                     48: .PP
                     49: .I Vepopen
                     50: has arguments akin to those of
                     51: .I execve 
                     52: (see
                     53: .IR exec (2)):
                     54: a file to be executed,
                     55: a mode as above,
                     56: a null-terminated vector of argument strings,
                     57: and a null-terminated vector of environment strings.
                     58: The shell is not called, and the effective userid is preserved.
                     59: .PP
                     60: A stream opened by these routines
                     61: should be closed by
                     62: .I pclose,
                     63: which waits for the associated process to terminate
                     64: and returns the exit status of the command.
                     65: .PP
                     66: Because the 
                     67: .I command
                     68: inherits open files, in particular standard input and output, a type
                     69: .L
                     70: "r"
                     71: call may be used to insert a filter in the input, and type
                     72: .L
                     73: "w"
                     74: in the output.
                     75: .SH "SEE ALSO"
                     76: .IR exec (2),
                     77: .IR pipe (2),
                     78: .IR fopen (3),
                     79: .IR stdio (3),
                     80: .IR system (3)
                     81: .SH DIAGNOSTICS
                     82: .I Popen
                     83: returns a null pointer
                     84: if files or processes cannot be created, or the Shell
                     85: cannot be accessed.
                     86: .PP
                     87: .I Pclose
                     88: returns \-1
                     89: if there is
                     90: no process to wait for.
                     91: .SH BUGS
                     92: Buffered reading before opening an input filter
                     93: may leave the standard input of that filter mispositioned.
                     94: Similar problems with an output filter may be
                     95: forestalled by calling
                     96: .IR fflush ;
                     97: see
                     98: .IR fopen (3).
                     99: .br
                    100: The resetting of the userid
                    101: is probably gratuitous;
                    102: it is there as a defense against incautious use
                    103: of the routine by set-uid programs.
                    104: .br
                    105: I/O type
                    106: .L
                    107: "r+w"
                    108: exists but is not useful.

unix.superglobalmegacorp.com

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