diff options
Diffstat (limited to 'manual/examples/pipe.c')
-rw-r--r-- | manual/examples/pipe.c | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/manual/examples/pipe.c b/manual/examples/pipe.c deleted file mode 100644 index adfa4658dc..0000000000 --- a/manual/examples/pipe.c +++ /dev/null @@ -1,87 +0,0 @@ -/* Creating a Pipe - Copyright (C) 1991-2017 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, if not, see <http://www.gnu.org/licenses/>. -*/ - -#include <sys/types.h> -#include <unistd.h> -#include <stdio.h> -#include <stdlib.h> - -/* Read characters from the pipe and echo them to @code{stdout}. */ - -void -read_from_pipe (int file) -{ - FILE *stream; - int c; - stream = fdopen (file, "r"); - while ((c = fgetc (stream)) != EOF) - putchar (c); - fclose (stream); -} - -/* Write some random text to the pipe. */ - -void -write_to_pipe (int file) -{ - FILE *stream; - stream = fdopen (file, "w"); - fprintf (stream, "hello, world!\n"); - fprintf (stream, "goodbye, world!\n"); - fclose (stream); -} - -int -main (void) -{ - pid_t pid; - int mypipe[2]; - -/*@group*/ - /* Create the pipe. */ - if (pipe (mypipe)) - { - fprintf (stderr, "Pipe failed.\n"); - return EXIT_FAILURE; - } -/*@end group*/ - - /* Create the child process. */ - pid = fork (); - if (pid == (pid_t) 0) - { - /* This is the child process. - Close other end first. */ - close (mypipe[1]); - read_from_pipe (mypipe[0]); - return EXIT_SUCCESS; - } - else if (pid < (pid_t) 0) - { - /* The fork failed. */ - fprintf (stderr, "Fork failed.\n"); - return EXIT_FAILURE; - } - else - { - /* This is the parent process. - Close other end first. */ - close (mypipe[0]); - write_to_pipe (mypipe[1]); - return EXIT_SUCCESS; - } -} |