From 7e0f021a9aec35fd8e6725e87e3313b101d26f5e Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sun, 27 Jan 2008 11:37:44 +0100 Subject: Initial import (2.0.2-6) --- reference/C/EXAMPLES/pipe1.c | 93 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 reference/C/EXAMPLES/pipe1.c (limited to 'reference/C/EXAMPLES/pipe1.c') diff --git a/reference/C/EXAMPLES/pipe1.c b/reference/C/EXAMPLES/pipe1.c new file mode 100644 index 0000000..7ddd1bf --- /dev/null +++ b/reference/C/EXAMPLES/pipe1.c @@ -0,0 +1,93 @@ +/**************************************************************** + * + * Purpose: Basic example of pipe. + * Read and write fixed length records across a pipe. + * This is about a simple as they come... + * + * Author: M J Leslie + * + * Date: 17 Apr 96 + * + ****************************************************************/ + +#include +#include /* pipe. */ +#include + +void Child (pid_t Handle); +void Parent (pid_t Handle); + +main() +{ + + pid_t Pid; + int fd[2]; + + pipe(fd); /* Create two file descriptors */ + + Pid = fork(); + + if ( Pid == 0) /* Child */ + { + close(fd[0]); + Child(fd[1]); + puts("Child end"); + } + else /* Parent. */ + { + close(fd[1]); + Parent(fd[0]); + puts("Parent end"); + } +} + +/**************************************************************** + * + * The Child sends data to the parent. + * + ****************************************************************/ + +void Child(pid_t Handle) +{ + char Buff[]="Martin 1 abcdefghijklmnop "; + + write(Handle, Buff, strlen(Buff)+1); + + Buff[7] = '2'; + write(Handle, Buff, strlen(Buff)+1); + + Buff[7] = '3'; + write(Handle, Buff, strlen(Buff)+1); + + Buff[7] = '4'; + write(Handle, Buff, strlen(Buff)+1); + + close(Handle); +} + +/**************************************************************** + * + * Read the data sent by the child. + * + ****************************************************************/ + + +void Parent(pid_t Handle) +{ + + char Buff[50]; + + /* ... Read EXACTLY the number of bytes sent. + ... 0 is returned when the pipe is closed by the child. */ + + while (read(Handle,Buff, 27) > 0) + { + printf("%s\n", Buff); + } + +} + + + + + -- cgit v1.2.3-54-g00ecf