Skip to content

A project for System Programming course using the Inotifywait to monitor a directory and processing its files

License

Notifications You must be signed in to change notification settings

KonstantinosZach/Inotifywait-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

2022 Project 1

Προσωπικά στοιχεία

Όνομα: Γεώργιος-Κωνσταντίνος Ζαχαρόπουλος

Documentation

Σκοπός του project

Εξοικέιωση με:

  • processes
  • use of system calls
  • fork/exec
  • communication between pipes και named pipes
  • low-level I/0
  • singals
  • shell scripts

Μια οντότητα listener με την χρήση της inotifywait στέλνει ειδοποιήσεις στην οντότητα manager όταν βλέπει αλλαγές στον φάκελο που γίνεται monitoring. O manager με την σειρά του δημιουργεί και επικοινωνεί με τους workers οι οποίοι διαβάζουν τα καινούργια αρχεία και εξάγουν τα location από τα URLS που βρίσκονται μέσα σε αυτά τα αρχεία, δημιουργώντας καινούργια αρχεία που κρατούν αυτή την πληροφορία.

Το shell script finder.sh δέχεται ως όρισμα TLDs και επιστρέφει πόσες φορές έχουν βρεθεί στα αντίστοιχα αρχεία των workers.

Αναλυτική Εκφώνηση

Το project έγινε στο πλαίσιο του μαθήματος Κ24:Προγραμματισμός Συστήματος


Εκτέλεση:

  • Mπορείτε να εκτελέσετε το πρόγραμμα τρέχοντας make run μέσα στον φάκελο programs. Επίσης για να ελέγξετε για leaks εκτελέστε make και στη συνέχεια make valgrind. Μπορείτε να αλάξετε το path που θέλετε να ακούει ο listener από τα args του makefile, με την προυπόθεση ότι ο φάκελος που διαλέξατε υπάρχει. Στο project1 υπάρχει ήδη άδειος φάκελος monitoring για αυτή την δουλειά, στον οποίο μπορείτε να μεταφέρετε αρχεία. Ο listener δεν θα πρέπει να ακούει στον φάκελο worker_outputs καθώς εκεί θα φτιάχνονται τα αρχεία των workers. Επίσης για να εκτελεστεί σωστά ο finder.sh, αφού έχουν δημιουργηθεί πρώτα τα αρχεία .out, θα πρέπει να είστε στον φάκελο project1 καθώς μέσα στο script χρησιμοποιείται η ls. Mε make clean διαγράφονται όλα τα εκτελέσιμα, τα .out του worker_outputs, τα .txt αρχεία που έχουν μπει στον monitoring φάκελο και τέλος τα results του sniffer. Άμα θέτε να ξανατρέξετε το πρόγραμμα να κάνετε πρώτα make clean.

Παραδοχές:

  • Ο worker όταν δέχεται το σήμα SIGINT από τον χρήστη τότε δεν τελειώνει την δουλεία του αλλά σταματάει αμέσως. Αυτό έχεις ως αποτέλεσμα να υπάρχουν still reachable leaks από την βιβλιοθήκη STL για να τα strings που είχαν χρησιμοποιηθεί.
  • Το πρόγραμμα στην αρχή δεν φτιάχνει όσους workers όσα και τα files που εισάγονται, αντίθετα φτιάχνει workers μόνο όταν δεν υπάρχουν ήδη available.
  • Tα ονόματα των fifo δημιουργούνται αυτόματα. Είναι της μορφής <fifo_name_id> όπου id, o αριθμός του worker. Το id του worker είναι η σειρά της δημιουργίας του. Ο πρώτος έχει id->0 ο δεύτερος id->1 κτλ.

Σχόλια:

  • Παρατήρησα ότι ο μηχανισμός drag and drop δεν λειτουργεί σωστά με το πρόγραμμα. οπότε για move ή create προυποθέτουμε οτι χρησιμοποιούνται οι εντολές mv και cp από το bash.

About

A project for System Programming course using the Inotifywait to monitor a directory and processing its files

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published