-
Notifications
You must be signed in to change notification settings - Fork 0
polizois/operating_systems_shell
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Σιώης Πολυζώης 8535 ***************************** Decompress ************************************** Για να αποσυμπιέσουμε το αρχείο 8535.tar.gz τρέχουμε την εντολή: "tar -zxvf 8535.tar.gz" Και παίρνουμε έναν φάκελο με όνομα "8535" ******************************************************************************* ******************************* Compile *************************************** Εντός του φσκέλου 8535, για να κάνουμε compile το "src/myshell.c" τρέχουμε την εντολή "make". Από το compile προκπύτει το εκτελέσιμο με διαδρομή "bin/myshell" ******************************************************************************* ****************************** Modes ****************************************** Το shell μπορεί να τρέξει σε 2 modes: - Ineractive mode - Batch mode ******************************************************************************* ***************************** Batch mode ************************************** Για batch mode τρέχουμε "bin/myshell batchFile", όπου batchFile το όνομα ενός αρχείου κειμένου που περιέχει εντόλες για εκτέλεση. (στο παραδωτέο δοκιμάστε αντί για batchFile -> test.sh) ******************************************************************************* *************************** Interactive mode ********************************** Για interactive mode τρέχουμε "bin/myshell" και εμφανίζονται επαναληπτικά prompt όπου μπορούμε να εισάγουμε εντολές για εκτέλεση. ******************************************************************************* ****************************** Δυνατότητες ************************************ Τόσο στο batch, όσο και στο interactive mode υποστηρίζεται η εισαγωγή πολλαπλών εντολών διαχωρισμένων με ; η &&. ******************************************************************************* ****************************** Διαχωρηστικά *********************************** ; - Επιτρεπει την εκτέλεση της εντολής που το ακολουθεί ανεξάρτητα απο την επιτυχή η μη ολοκλήρωση αυτής που προηγονταν. && - Δεν επιτρέπει την εκτέλεση της εντολής που το ακολουθεί , αν αυτή που προηγονταν έχει αποτύχει. ******************************************************************************* ***************************** Περιορισμοί ************************************* Η εισαγωγή περισσότερων απο 512 χαρακτήρων αν γραμμή(είτε στο prompt, είτε στο batchFile) οδηγεί σε σφάλμα. ******************************************************************************* ****************************** Περιγραφή ************************************** H επιλογή του mode γίνεται απο τον αριθμο των ορισμάτων που δίνονται κατα την κλήση του shell. Το shell δέχεται επαναληπτικά μια γραμμή κειμένου είτε απο το promp(σε Interactive mode) ειτε απο κάποιο αρχείο κειμένου(σε batch mode). Ξεχωρίζει τις εντολες με βαση τα διαχωριστικα και έπειτα σπάει τις εντολές αυτές σε ορίσματα. Για κάθε εντολή (άν η λογική των διαχωριστικών το επιτρέπει) σηκώνεται θηγατρικό process το οποίο την εκτελεί.Άν η εκτέλση της εντολής είναι επιτυχής, τυπώνεται το αποτέλεσμά της, αλλιώς τυπώνεται μύνημα σφάλματος. Το κυρίως περιμένει την επιστροφή του θηγατρικού για να συνεχίσει την εκτέλεση του. Η εξοδος απο το shell γίνεται με την εντολή quit (ή αν η ανάγνωση φτάσει στο τέλος του αρχείου στην batch mode). ******************************************************************************* ***************************** Τεκμηρίωση ************************************** Για πιο αναλυτική τεκμιρίωση του κώδικα, μπορείτε να διαβάσετε τον σχολιασμό στον ίδιο τον κώδικα (src/myshell.c). *******************************************************************************
About
Basic implemantation of a linux shell in c
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published