X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=src%2Fprocess2.c;h=b6dff4b8d2fa0703405cf9ee49e97793ee01d5e3;hb=51faabd1c82aa37c43f6521ae17c47ce62272754;hp=4309e0c2a35fac44a62a4d0fd62bc0d58b6b0b14;hpb=eb58b0955c4340aafb4508e9c269b3216b2c1c1f;p=wsti_so.git diff --git a/src/process2.c b/src/process2.c index 4309e0c..b6dff4b 100644 --- a/src/process2.c +++ b/src/process2.c @@ -1,6 +1,4 @@ #include -#include -#include /* open/read/write/close */ #include @@ -19,12 +17,24 @@ int main(void) { /** Named pipe used to communicate with process3 */ char * write_pipe = "/tmp/process2pipe"; + /** Descriptor of input pipe */ int read_descriptor; + + /** Descriptor of output pipe */ int write_descriptor; - + + /** + * Buffer used for storing data from input pipe. + * Data is stored in chunks of BUFFER_STEP size. + * If data during reading is bigger than this value, then number of + * characters is saved, and buffer is cleared for reading another chunk. + */ char buffer[BUFFER_STEP]; - + + /** Index used when iterating buffer */ int i = 0; + + /** Stores number of bytes read from input pipe in current iteration */ ssize_t count = 0; /* Reading from process1 */ @@ -33,28 +43,31 @@ int main(void) { /* Writing to process2 */ mkfifo(write_pipe, 0666); write_descriptor = open(write_pipe, O_WRONLY); - + int number_of_characters = 0; - - do { + + fprintf(stderr, "[%s] Init!\n", "process2"); + + while(1) { /* Read data from input pipe */ count = read(read_descriptor, buffer, BUFFER_STEP); - printf("fetched: %d bytes\n", count); + fprintf(stderr, "[%s] Fetched: %d bytes\n", "process2", count); if (count > 0) { - int j = 0; - for (; j < count; j++, number_of_characters++) { - if (buffer[j] == '\n') { - fprintf(stderr, "Writting about: %d\n", number_of_characters); - write(write_descriptor, number_of_characters, sizeof(number_of_characters)); + for (i = 0; i < count; i++, number_of_characters++) { + if (buffer[i] == '\n') { + fprintf(stderr, "[%s] Calculated: %d characters. Sending...\n", "process2", number_of_characters); + write(write_descriptor, &number_of_characters, sizeof(number_of_characters)); write(write_descriptor, '\n', 1); number_of_characters = 0; } } - } - } while(count > 0); + else { + break; + } + } close(read_descriptor); close(write_descriptor);