From 1a182bf57e39422f23439520b40fc6007e991757 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rafa=C5=82=20D=C5=82ugo=C5=82=C4=99cki?= Date: Tue, 17 Jun 2014 00:45:38 +0200 Subject: [PATCH] Created named pipe to communicate with the process2. --- Makefile.am | 6 +++++- src/process1.c | 35 +++++++++++++++++++++++++++-------- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/Makefile.am b/Makefile.am index 35b3782..9ff0cfe 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,7 +2,11 @@ AUTOMAKE_OPTIONS = gnu subdir-objects ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} bin_PROGRAMS = \ - bin/process1 + bin/process1 \ + bin/process2 bin_process1_SOURCES = \ src/process1.c + +bin_process2_SOURCES = \ + src/process2.c diff --git a/src/process1.c b/src/process1.c index 695e887..9374646 100644 --- a/src/process1.c +++ b/src/process1.c @@ -2,12 +2,15 @@ #include #include +/* open/read/write/close */ +#include + /** If buffer is too small to hold entire string, it is incremented by this value */ #define BUFFER_STEP 16 /** - * Program reads entire lines of text from the standard input and returns them - * on the standard output without changing anything. + * Program reads entire lines of text from the standard input and pass them + * to the process2 using created pipe. */ int main(void) { /** Currently fetched from stdin character */ @@ -19,14 +22,25 @@ int main(void) { /** Current buffer length*/ int buffer_length = 0; - /* Index of the current character */ + /** Index of the current character */ int i = 0; - - /** Temporary buffer used as a proxy between + + /** + * Temporary buffer used as a proxy between * checking memory allocation and copying data to real buffer */ - char *tmp = NULL; + char * tmp = NULL; + + /** Named pipe used to communnicate with process2 */ + char * fifo = "/tmp/process1fifo"; + + /** File descriptor of pipe */ + int file_descriptor; + mkfifo(fifo, 0666); + + file_descriptor = open(fifo, O_WRONLY); + do { c = fgetc(stdin); @@ -55,7 +69,9 @@ int main(void) { * return entire string and release the memory */ if (c == 10) { - fprintf(stdout, "%s\n", buffer); + buffer[i] = '\n'; + write(file_descriptor, buffer, ++buffer_length); + /*fprintf(stdout, "%s\n", buffer);*/ buffer_length = 0; i = 0; @@ -79,7 +95,10 @@ int main(void) { } } } while(c != EOF); - + + close(fifo); + unlink(fifo); + if (buffer) { free(buffer); buffer = NULL; -- 2.30.2