Advertisement
Guest User

Process

a guest
Aug 28th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
4CS 1.33 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <fcntl.h>
  3. #include <unistd.h>
  4.  
  5. void handle_file(char* filename) {
  6.     int sentences = 0;
  7.     int commas = 0;
  8.  
  9.     int f = open(filename, O_RDONLY);
  10.     char buff[200];
  11.     int read_bytes;
  12.  
  13.     // Workaround
  14.     char previous_char = '.';
  15.     // A sentence. Another, one...
  16.     while((read_bytes = read(f, buff, 200)) > 0) {
  17.         int i; // read_bytes = 50
  18.         for(i = 0; i < read_bytes; i++) {
  19.             if(buff[i] == '.' && previous_char != '.')
  20.                 sentences++;
  21.             else if(buff[i] == ',')
  22.                 commas++;
  23.  
  24.             previous_char = buff[i];
  25.  
  26.             if(write(STDOUT_FILENO, &buff[i], 1) < 0)
  27.                 perror("Write error");
  28.         }
  29.     }
  30.  
  31.     if(read_bytes != 0)
  32.         perror("Read error");
  33.  
  34.     close(f);
  35.     printf("\nCommas: %d\nSentences: %d\n", commas, sentences);
  36. }
  37.  
  38. // argc - ARGument Count
  39. // argv - ARGument Values
  40.  
  41. int main(int argc, char** argv) {
  42.     int pids[argc - 1];
  43.  
  44.     int i;
  45.     for(i = 1; i < argc; i++) {
  46.         pids[i - 1] = fork();
  47.  
  48.         if(pids[i - 1] < 0)
  49.         {
  50.             perror("Fork error");
  51.         }
  52.         else if(pids[i - 1] == 0)
  53.         {
  54.             handle_file(argv[i]);
  55.             return 0;
  56.         }
  57.     }
  58.  
  59.     for(i = 1; i < argc; i++)
  60.         wait(NULL);
  61.  
  62.     return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement