delorie.com/djgpp/doc/libc/libc_616.html | search |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
#include <unistd.h> int pipe(int fildes[2]); |
This function creates a pipe and places a file descriptor for the read end
of the pipe in fildes[0]
, and another for the write end in
fildes[1]
. Data written to fildes[1]
will be read
from fildes[0]
on a first-in first-out (FIFO) basis.
Note this pipe implementation won't help port instances of
fork
/exec
or any other methods that require support for
multitasking.
Zero for success, otherwise -1 is returned and errno
is set to indicate
the error.
ANSI/ISO C | No |
POSIX | 1003.2-1992; 1003.1-2001 |
#include <unistd.h> #include <process.h> /* Pipe the output of program to the input of another. */ int main() { int pipe_fds[2]; int stdin_save, stdout_save; if (pipe(pipe_fds) < 0) return -1; /* Duplicate stdin and stdout so we can restore them later. */ stdin_save = dup(STDIN_FILENO); stdout_save = dup(STDOUT_FILENO); /* Make the write end of the pipe stdout. */ dup2(pipe_fds[1], STDOUT_FILENO); /* Run the program. Its output will be written to the pipe. */ spawnl(P_WAIT, "/dev/env/DJDIR/bin/ls.exe", "ls.exe", NULL); /* Close the write end of the pipe. */ close(pipe_fds[1]); /* Restore stdout. */ dup2(stdout_save, STDOUT_FILENO); /* Make the read end of the pipe stdin. */ dup2(pipe_fds[0], STDIN_FILENO); /* Run another program. Its input will come from the output of the first program. */ spawnl(P_WAIT, "/dev/env/DJDIR/bin/less.exe", "less.exe", "-E", NULL); /* Close the read end of the pipe. */ close(pipe_fds[0]); /* Restore stdin. */ dup2(stdin_save, STDIN_FILENO); return 0; } |
webmaster | delorie software privacy |
Copyright © 2004 | Updated Apr 2004 |