Title: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on December 11, 2014, 13:27:33 pm Topic που αφορά την εργασία του μαθήματος, με απορίες/ερωτήσεις/κλπ σχετικά με αυτήν. Stay on topic!
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: boone on December 20, 2014, 21:11:31 pm Οκέι, θα ξεκινήσω εγώ πρώτος τις ερωτήσεις, με κίνδυνο διαρροής, στο κοινό, της ασχετοσύνης μου.
Πώς σκατά ξεκινάμε; Είναι λίγο δύσκολη ή απλά είναι του στυλ "ξεκίνα και θα πιάσεις το νόημα"; Δεν έχει πάντως καμία σχέση με το εργαστήριο, μόνο η ύπαρξη της θυγατρικής το πλησιάζει. Μας ανέβασε και το 1358σέλιδο pdf και έξω απ' τη μπόρτα *sigh from bottom of lungs* edit: Σε περίπτωση που χρειαστεί να τρέξετε σε περιβάλλον Linux τον κώδικά σας, βρήκα ένα πρόγραμμα προσομοίωσης όπου μπορεί να τρέξει το Linux στα Windows. Πρώτα download+setup αυτό https://download3.vmware.com/software/player/file/VMware-player-7.0.0-2305329.exe?HashKey=a0be7a4af36bdc5fa7f69ada7c495dda&ext=.exe¶ms=%7B%22sourcefilesize%22%3A%2275+MB%22%2C%22dlgcode%22%3A%22PLAYER-700%22%2C%22languagecode%22%3A%22en%22%2C%22source%22%3A%22DOWNLOADS%22%2C%22downloadtype%22%3A%22manual%22%2C%22eula%22%3A%22N%22%2C%22downloaduuid%22%3A%22d4183dd0-1fce-4723-b0fe-96af254ba12a%22%2C%22purchased%22%3A%22N%22%2C%22dlgtype%22%3A%22Product+Binaries%22%2C%22productversion%22%3A%227.0.0%22%2C%22productfamily%22%3A%22VMware+Player%22%7D&AuthKey=1418675900_d43b5ea063719fbe508b20f484151c3c&ext=.exe (https://download3.vmware.com/software/player/file/VMware-player-7.0.0-2305329.exe?HashKey=a0be7a4af36bdc5fa7f69ada7c495dda&ext=.exe¶ms=%7B%22sourcefilesize%22%3A%2275+MB%22%2C%22dlgcode%22%3A%22PLAYER-700%22%2C%22languagecode%22%3A%22en%22%2C%22source%22%3A%22DOWNLOADS%22%2C%22downloadtype%22%3A%22manual%22%2C%22eula%22%3A%22N%22%2C%22downloaduuid%22%3A%22d4183dd0-1fce-4723-b0fe-96af254ba12a%22%2C%22purchased%22%3A%22N%22%2C%22dlgtype%22%3A%22Product+Binaries%22%2C%22productversion%22%3A%227.0.0%22%2C%22productfamily%22%3A%22VMware+Player%22%7D&AuthKey=1418675900_d43b5ea063719fbe508b20f484151c3c&ext=.exe) και μετά download το Ubuntu: http://www.trendsigma.net/vmware/_dl/ubuntu1104.zip (http://www.trendsigma.net/vmware/_dl/ubuntu1104.zip) HOW TO: 1. Ανοίγετε το VMware Player 2. Open Virtual Machine 3. Επιλέγεται το "Ubuntu" από τον ξεζιπαρισμένο φάκελο 4. Voila! Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: spira mirabilis on December 27, 2014, 17:35:02 pm Οκέι, θα ξεκινήσω εγώ πρώτος τις ερωτήσεις, με κίνδυνο διαρροής, στο κοινό, της ασχετοσύνης μου. Δεν είναι και τόσο χαοτική η εργασία. Νομίζω ότι με τα φυλλάδια 3 και 4 του εργαστηρίου και λίγο ψάξιμο στο ίντερνετ βγαίνει. Έχει κάποια καλά παραδείγματα, ας πούμε με την σελίδα 13 του 3ου φυλλαδίου έχεις κάνει την μισή δουλειά. ;)Πώς σκατά ξεκινάμε; Είναι λίγο δύσκολη ή απλά είναι του στυλ "ξεκίνα και θα πιάσεις το νόημα"; Δεν έχει πάντως καμία σχέση με το εργαστήριο, μόνο η ύπαρξη της θυγατρικής το πλησιάζει. Μας ανέβασε και το 1358σέλιδο pdf και έξω απ' τη μπόρτα *sigh from bottom of lungs* Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: vlad on December 27, 2014, 21:13:53 pm Διαβαστε το pdf που εχει στα link.Ειναι μονο 1000+ σελιδες :D :D
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Xleboniaris on December 29, 2014, 21:50:09 pm Στην ουσία, το shell που πρέπει να χειρίζεται τις παρακάτω περιπτώσεις ??? ??
( Ας επιβεβαιώσει κάποιος που το κατάλαβε πλήρως) - Απλές εντολές του linux (όπως ps) καθώς και αρχεία του χρήστη. Αυτό όπως αναφέρθηκε πιο πάνω, υπάρχει στο 3ο φυλλάδιο. Δηλαδή, δημιουργούνται θυγατρικές διεργασίες, που τρέχουν τα πιο πάνω προγράμματα και η πατρική περιμένει μέχρι να ολοκληρωθούν ( και άρα να τυπώσει ξανά το myshell$). Εδώ, να αναφέρω ότι, ενώ δουλεύει για όλα όσα δοκίμασα (και για συναρτήσεις του χρήστη), είδα ότι είχε πρόβλημα στην cat. Αν κάποιος, έχει καταλάβει τι πρέπει να προσέξουμε ας δώσει μια βοήθεια. -Εντολές εσωτερικές, δηλαδή υλοποίηση της cd, που γίνεται από την κεντρική διεργασία με απευθείας κλήση συστήματος της chdir(). -Εντολές, τύπου background, που θα τελειώνουν στον χαρακτήρα &. Δηλαδή, με το που δίνεται μια τέτοια εντολή, αν κατάλαβα καλά, δεν θα τερματίζει αλλά θα μένει στο παρασκήνιο (με κάποιο pid) και άρα θα τυπώνεται αμέσως ξανά, το μήνυμα myshell$ από την μητρική?? δηλαδή δεν θα περιμένει η μητρική να τερματίσει η θυγατρική έτσι? - Εντολές, εξόδου exit. Exit, δηλαδή, θα δίνουμε όταν τυπώνεται το μήνυμα myshell$ και θα πρέπει να τερματίζει η συνάρτηση shell , που κάναμε εμείς??? Δηλαδή, ο σκοπός είναι τα τερματίζει σωστά την μητρική και τις θυγατρικές διεργασίες του παρασκηνίου, χωρίς, να γίνονται ζόμπι?? -Τέλος, είναι η διαχείριση του σήματος Ctrl+C, έτσι?? Εδώ, δεν τον πιάνω πολύ. Δηλαδή, το σήμα Ctrl+C, θα πρέπει να τερματίζει την θυγατρική διεργασία που τρέχει εκείνη την στιγμή που πατάμε τα πλήκτρα , χωρίς να τερματίζει την μητρική ??? Δηλαδή, όταν δοθεί αυτό το σήμα, πρέπει στην επόμενη γραμμή να τυπωθεί το μήνυμα προτροπής myshell$?? Και, τότε τι γίνεται με τις θυγατρικές στο παρασκήνιο, συνεχίζουν να υπάρχουν οι διαγράφονται ?? ? Σορρυ αν κούρασα Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: boone on December 30, 2014, 15:07:34 pm Xleboniaris, όταν φτάσω σε κάποιο σημείο και μπορέσω, θα βοηθήσω, είμαι ακόμη σε αρχικό στάδιο.
Ήθελα να ρωτήσω αν έχει συναντήσει κάποιος "segmentation fault". Το βγάζει όταν καλώ την ls και δεν ξέρω τί φάση.. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Xleboniaris on December 30, 2014, 15:29:21 pm Xleboniaris, όταν φτάσω σε κάποιο σημείο και μπορέσω, θα βοηθήσω, είμαι ακόμη σε αρχικό στάδιο. Ήθελα να ρωτήσω αν έχει συναντήσει κάποιος "segmentation fault". Το βγάζει όταν καλώ την ls και δεν ξέρω τί φάση.. Από άλλο thread, υπάρχει η παρκάτω απάντηση ενός φίλου. Πάντως, αν βασιστείς στο έτοιμο παράδειγμα, στο φυλλάδιο 3, όπου γίνεται κλήση συναρτήσεων συστήματος μέσω θυγατρικών διεργασιών, λογικά δεν θα έπρεπε να έχεις πρόβλημα... Για - segmentation fault core dumped - λάθη, έλεγξε αρχικά όλους τους pointers, οι οποίοι είναι υπεύθυνοι για καταχώρηση μνήμης. Συνήθως προκαλούνται όταν προσπαθείς να εγγράψεις δεδομένα, εκτός των ορίων ενός πίνακα, ή σε λάθος τμήμα της μνήμης. Αλλα γενικά, μπορεί να οφείλονται και σε άλλους λόγους, όπως για παράδειγμα, όταν ξεχάσεις να δώσεις ένα όρισμα εισόδου ή δώσεις περισσότερα ή λάθος ορίσματα εισόδου, όταν τρέχεις το πρόγραμμα, π.χ.: ./myProgram input1.png input2.png output.png τα οποία είναι και αυτά στην ουσία λάθη εκχώρησης μνήμης. Για Debugging δες εδώ: https://wiki.ubuntu.com/Backtrace (https://wiki.ubuntu.com/Backtrace) Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: boone on December 30, 2014, 15:54:39 pm Απλά λέει ότι σε κάποιες εντολές, όπως πχ. cd, exit δε θα εκκινεί θυγατρική. Μόνο σ αυτές θα κάνει απ ευθείας εκτέλεση και σε όλες οι άλλες θα εκτελούνται μέσω θυγατρικής;
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: et3rn1ty on December 30, 2014, 18:06:22 pm Απλά λέει ότι σε κάποιες εντολές, όπως πχ. cd, exit δε θα εκκινεί θυγατρική. Μόνο σ αυτές θα κάνει απ ευθείας εκτέλεση και σε όλες οι άλλες θα εκτελούνται μέσω θυγατρικής; Ναι, οι εσωτερικές εντολές του κελύφους δεν έχει νόημα να εκτελούνται σε θυγατρική αφού αφορούν το ίδιο το κέλυφος. Οι υπόλοιπες είναι θυγατρικές γιατί είναι άλλα προγράμματα των οποίων τον έλεγχο έχει το κέλυφος (πχ μπορεί να τα σταματήσει με ctrl-c, να τα βάλει στο background, κλπ) Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: spira mirabilis on December 30, 2014, 19:38:44 pm - Εντολές, εξόδου exit. Exit, δηλαδή, θα δίνουμε όταν τυπώνεται το μήνυμα myshell$ και θα πρέπει να τερματίζει η συνάρτηση shell , που κάναμε εμείς??? Δηλαδή, ο σκοπός είναι τα τερματίζει σωστά την μητρική και τις θυγατρικές διεργασίες του παρασκηνίου, χωρίς, να γίνονται ζόμπι?? -Τέλος, είναι η διαχείριση του σήματος Ctrl+C, έτσι?? Εδώ, δεν τον πιάνω πολύ. Δηλαδή, το σήμα Ctrl+C, θα πρέπει να τερματίζει την θυγατρική διεργασία που τρέχει εκείνη την στιγμή που πατάμε τα πλήκτρα , χωρίς να τερματίζει την μητρική ??? Δηλαδή, όταν δοθεί αυτό το σήμα, πρέπει στην επόμενη γραμμή να τυπωθεί το μήνυμα προτροπής myshell$?? Και, τότε τι γίνεται με τις θυγατρικές στο παρασκήνιο, συνεχίζουν να υπάρχουν οι διαγράφονται ?? ? Σύμφωνα με τον μεταπτυχιακό: Το ctr+c σκοτώνει όποια διεργασία τρέχει στο προσκήνιο και στο παρασκήνιο. Το κέλυφος συνεχίζει κανονικά,δηλαδή εμφανίζεται μήνυμα προτροπής. Με exit τερματίζει το κέλυφος αφού σκοτώσει πρώτα όποια διεργασία τρέχει. Τα πιο πάνω που είπες σωστά μου φαίνονται.Η cat δεν θα έπρεπε να έχει πρόβλημα. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on December 30, 2014, 20:34:09 pm - Εντολές, εξόδου exit. Exit, δηλαδή, θα δίνουμε όταν τυπώνεται το μήνυμα myshell$ και θα πρέπει να τερματίζει η συνάρτηση shell , που κάναμε εμείς??? Δηλαδή, ο σκοπός είναι τα τερματίζει σωστά την μητρική και τις θυγατρικές διεργασίες του παρασκηνίου, χωρίς, να γίνονται ζόμπι?? -Τέλος, είναι η διαχείριση του σήματος Ctrl+C, έτσι?? Εδώ, δεν τον πιάνω πολύ. Δηλαδή, το σήμα Ctrl+C, θα πρέπει να τερματίζει την θυγατρική διεργασία που τρέχει εκείνη την στιγμή που πατάμε τα πλήκτρα , χωρίς να τερματίζει την μητρική ??? Δηλαδή, όταν δοθεί αυτό το σήμα, πρέπει στην επόμενη γραμμή να τυπωθεί το μήνυμα προτροπής myshell$?? Και, τότε τι γίνεται με τις θυγατρικές στο παρασκήνιο, συνεχίζουν να υπάρχουν οι διαγράφονται ?? ? Σύμφωνα με τον μεταπτυχιακό: Το ctr+c σκοτώνει όποια διεργασία τρέχει στο προσκήνιο και στο παρασκήνιο. Το κέλυφος συνεχίζει κανονικά,δηλαδή εμφανίζεται μήνυμα προτροπής. Με exit τερματίζει το κέλυφος αφού σκοτώσει πρώτα όποια διεργασία τρέχει. Τα πιο πάνω που είπες σωστά μου φαίνονται.Η cat δεν θα έπρεπε να έχει πρόβλημα. Με το συνδυασμό Ctrl+C δε θα έπρεπε να σταματά οποιαδήποτε διεργασία τρέχει στο foreground? Αν δηλαδή σε κάποια εντολή είχαμε κάνει append στο τέλος τον χαρακτήρα '&', και επομένως επιθυμούμε να τρέξει στο background, τότε αυτή νομίζω θα έπρεπε να παραμένει ανέπαφη από το Ctrl+C. Αυτό μου φαίνεται λογικό, άλλωστε και ένα κανονικό Shell έτσι δεν λειτουργεί; Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: spira mirabilis on December 30, 2014, 22:35:06 pm - Εντολές, εξόδου exit. Exit, δηλαδή, θα δίνουμε όταν τυπώνεται το μήνυμα myshell$ και θα πρέπει να τερματίζει η συνάρτηση shell , που κάναμε εμείς??? Δηλαδή, ο σκοπός είναι τα τερματίζει σωστά την μητρική και τις θυγατρικές διεργασίες του παρασκηνίου, χωρίς, να γίνονται ζόμπι?? -Τέλος, είναι η διαχείριση του σήματος Ctrl+C, έτσι?? Εδώ, δεν τον πιάνω πολύ. Δηλαδή, το σήμα Ctrl+C, θα πρέπει να τερματίζει την θυγατρική διεργασία που τρέχει εκείνη την στιγμή που πατάμε τα πλήκτρα , χωρίς να τερματίζει την μητρική ??? Δηλαδή, όταν δοθεί αυτό το σήμα, πρέπει στην επόμενη γραμμή να τυπωθεί το μήνυμα προτροπής myshell$?? Και, τότε τι γίνεται με τις θυγατρικές στο παρασκήνιο, συνεχίζουν να υπάρχουν οι διαγράφονται ?? ? Σύμφωνα με τον μεταπτυχιακό: Το ctr+c σκοτώνει όποια διεργασία τρέχει στο προσκήνιο και στο παρασκήνιο. Το κέλυφος συνεχίζει κανονικά,δηλαδή εμφανίζεται μήνυμα προτροπής. Με exit τερματίζει το κέλυφος αφού σκοτώσει πρώτα όποια διεργασία τρέχει. Τα πιο πάνω που είπες σωστά μου φαίνονται.Η cat δεν θα έπρεπε να έχει πρόβλημα. Με το συνδυασμό Ctrl+C δε θα έπρεπε να σταματά οποιαδήποτε διεργασία τρέχει στο foreground? Αν δηλαδή σε κάποια εντολή είχαμε κάνει append στο τέλος τον χαρακτήρα '&', και επομένως επιθυμούμε να τρέξει στο background, τότε αυτή νομίζω θα έπρεπε να παραμένει ανέπαφη από το Ctrl+C. Αυτό μου φαίνεται λογικό, άλλωστε και ένα κανονικό Shell έτσι δεν λειτουργεί; Κι εγώ αυτό είχα υποθέσει. Είναι το πιο λογικό, απλά η εκφώνηση της εργασίας δεν είναι πολύ ξεκάθαρη, οπότε είπα να ρωτήσω. Η απάντησή του ήταν λίγο αντιφατική, αλλά μπορεί να μπερδεύτηκε εκεί που με παρέθεσε. θα ποστάρω και το mail για να καταλάβεις. Ας ρωτήσει και κάποιος άλλος,για να είμαστε σίγουροι. Το mail... Απαντώ στο ερώτημα σου. ... Από όσο έχω καταλάβει το ctr+c διακόπτει την λειτουργία της διεργασίας που βρίσκεται στο foreground(δεν επηρεάζει τα background processes και το MyShell). Ακριβώς. ...Αντίθετα η εντολή exit τερματίζει το MyShell και σκοτώνει τα background processes Πολύ σωστά. Το ctr+c είναι σήμα, το exit εντολή. Για το exit θα κλείνει το MyShell (τερματίζοντας ότι υπάρχει) Για το ctr+c θα κάνει termination οποίο process τρέχει (foreground/bacnkground). Αν δεν τρέχε τπτ τότε απλά δε θα κάνει τπτ. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Cr0ne on December 30, 2014, 22:44:45 pm Με το συνδυασμό Ctrl+C δε θα έπρεπε να σταματά οποιαδήποτε διεργασία τρέχει στο foreground? Αν δηλαδή σε κάποια εντολή είχαμε κάνει append στο τέλος τον χαρακτήρα '&', και επομένως επιθυμούμε να τρέξει στο background, τότε αυτή νομίζω θα έπρεπε να παραμένει ανέπαφη από το Ctrl+C. Αυτό μου φαίνεται λογικό, άλλωστε και ένα κανονικό Shell έτσι δεν λειτουργεί; Ό,τι λέει ο Exomag ισχύει ακριβώς. Για να σταματήσει το proccess που ξεκινήσατε με '&' πρέπει να κλείσεις το shell. Το Ctrl-C είναι για foreground μόνο. τρέχοντας αυτό το script Code: #!/bin/bash σε linux με και χωρίς '&': http://imgur.com/a/CwDKX όταν βάλεις '&' φαίνεται ότι όσο Ctrl-C και να πατάς δεν σταματάει :D Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on December 30, 2014, 23:25:01 pm Πολύ tryhard για να αποδείξεις κάτι απλό Cr0ne :P
Αλλά ναι, elena_numb, λογικά ο μεταπτυχιακός δεν κατάλαβε καλά την ερώτηση σου ή σου απάντησε βιαστικά (να μην ξέρει πως δουλεύει ένα linux shell δεν παίζει, ελπίζω) οπότε πιστεύω πως το να δουλεύει το πρόγραμμα που θα γράψεις όσο πιο πανομοιότυπα με ένα κλασικό linux shell γίνεται είναι το καλύτερο. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: spira mirabilis on December 30, 2014, 23:39:20 pm Πολύ tryhard για να αποδείξεις κάτι απλό Cr0ne :P Οκ, θα ακούσω την φωνή της λογικής-Exomag τότε 8))Αλλά ναι, elena_numb, λογικά ο μεταπτυχιακός δεν κατάλαβε καλά την ερώτηση σου ή σου απάντησε βιαστικά (να μην ξέρει πως δουλεύει ένα linux shell δεν παίζει, ελπίζω) οπότε πιστεύω πως το να δουλεύει το πρόγραμμα που θα γράψεις όσο πιο πανομοιότυπα με ένα κλασικό linux shell γίνεται είναι το καλύτερο. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on December 31, 2014, 03:15:07 am Πολύ tryhard για να αποδείξεις κάτι απλό Cr0ne :P Οκ, θα ακούσω την φωνή της λογικής-Exomag τότε 8))Αλλά ναι, elena_numb, λογικά ο μεταπτυχιακός δεν κατάλαβε καλά την ερώτηση σου ή σου απάντησε βιαστικά (να μην ξέρει πως δουλεύει ένα linux shell δεν παίζει, ελπίζω) οπότε πιστεύω πως το να δουλεύει το πρόγραμμα που θα γράψεις όσο πιο πανομοιότυπα με ένα κλασικό linux shell γίνεται είναι το καλύτερο. Πολύ σωστή σε βρίσκω ;) Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Xleboniaris on January 02, 2015, 00:12:52 am Πρώτα από όλα Καλή χρονιά και ευχαριστώ για τις απαντήσεις σας.
Τώρα, για την εργασία. Γενικά, έχω κοιτάξει όλα τα ερωτήματα και γενικά πάνω κάτω βρήκα τι να κάνω. Ωστόσο, δυσκολεύομαι με το κομμάτι όπου πρέπει να βάζουμε διεργασίες στο παρασκήνιο. Ας αναφέρω μερικά διαφορετικά πράγματα που σκέφτηκα. Αρχικά, χρησιμοποίησα μια συνάρτηση ας πούμε Background, αντίστοιχη με την execute, του παραδείγματος μόνο το κομμάτι που αναφέρεται στην γονική διεργασία (pid >0) , δεν κάνει τίποτε, δηλαδή δεν υπάρχει wait. Έπειτα, στην main, ακριβώς από κάτω της κλήση της Background , είχα βάλει να στέλνεται ένα σήμα SIGSTOP, στο pid που της θυγατρικής, που το έπαιρνα από την Background μέσω pointer. Όταν, τρέξω μια εντολής , ας πούμε την "ls -l &", τότε αυτή δεν φαίνεται να κάνει κάτι, απλά μετά την είσοδο της "ps", φαίνεται ότι υπάρχει μια διεργασία αποθηκευμένη (σταματημένη), με το pid, που αναφέρθηκε παραπάνω. Και όταν δωθεί μια εντολή με & στο τέλος, στην επόμενη γραμμή εμφανίζεται το προτρεπτικό κελύφους $ . Από ότι κατάλαβα, είναι το ίδιο πράγμα σαν να είχα βάλει την, pause(), ακριβώς πάνω από την execvp(), στο κομμάτι της θυγατρικής διεργασίας (pid==0). Όμως, η ps, έχει δίπλα στο pid της θυγατρικής το όνομα του αρχείου του shell. Δηλαδή, αν το εκτελέσιμο αρχείο αρχικά είναι το ./a.out, στο νέο pid που εμφανίζει η ps και αντιστοιχεί στην θυγατρική έχει το ./a.out. Αν τώρα, βάλω την pause ή στείλω SIGSTOP, μετά την execpv, τότε αυτή εκτελείται κανονικά, οπότε και όταν καλείται η ps, δεν υπάρχει κάποια διεργασία σταματημένη. Όμως, σε ένα κανονικό shell του Linux, όταν δώσουμε την εντολή "ls -l &", στέλνεται η διεργασία στο παρασκήνιο, όπου εκτελείται αμέσως, αφού δεν απαιτεί να δοθεί κάποια περαιτέρω είσοδος κατά την εκτελέσει , όμως δεν ολοκληρώνει την εκτέλεση της δηλαδή δεν βγαίνει το προτρεπτικό $, στην επόμενη γραμμή. Όταν, όμως καλούνται συναρτήσεις όπου διαβάζεται είσοδος, εκεί η λειτουργιάς τους αναστέλεται και αποθηκεύονται στο παρασκήνιο με ένα pid. Θέλω, λοιπόν, να ρωτήσω τι ακριβώς, κάνουμε εμείς στο ερώτημα αυτό. Πχ, για την "ls -l &", θέλει να γίνεται ότι ακριβώς και στο πραγματικό Linux shell ή απλά να μην εκτελείται αμέσως η εντολή αυτή και να αποθηκεύεται σαν σταματημένη διεργασία. Επίσης, όποιος γνωρίζει στο συγκεκριμένο ερώτημα, ας δώσει μια βοήθεια η μια ιδέα για το πως ακριβώς θα το κάνουμε ή και κάποια παραπομπή, γιατί πολύ πιθανόν να είμαι πολύ μακριά από αυτό που ζητάει. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 02, 2015, 18:17:52 pm Πρώτα από όλα Καλή χρονιά και ευχαριστώ για τις απαντήσεις σας. Τώρα, για την εργασία. Γενικά, έχω κοιτάξει όλα τα ερωτήματα και γενικά πάνω κάτω βρήκα τι να κάνω. Ωστόσο, δυσκολεύομαι με το κομμάτι όπου πρέπει να βάζουμε διεργασίες στο παρασκήνιο. Ας αναφέρω μερικά διαφορετικά πράγματα που σκέφτηκα. Αρχικά, χρησιμοποίησα μια συνάρτηση ας πούμε Background, αντίστοιχη με την execute, του παραδείγματος μόνο το κομμάτι που αναφέρεται στην γονική διεργασία (pid >0) , δεν κάνει τίποτε, δηλαδή δεν υπάρχει wait. Έπειτα, στην main, ακριβώς από κάτω της κλήση της Background , είχα βάλει να στέλνεται ένα σήμα SIGSTOP, στο pid που της θυγατρικής, που το έπαιρνα από την Background μέσω pointer. Όταν, τρέξω μια εντολής , ας πούμε την "ls -l &", τότε αυτή δεν φαίνεται να κάνει κάτι, απλά μετά την είσοδο της "ps", φαίνεται ότι υπάρχει μια διεργασία αποθηκευμένη (σταματημένη), με το pid, που αναφέρθηκε παραπάνω. Και όταν δωθεί μια εντολή με & στο τέλος, στην επόμενη γραμμή εμφανίζεται το προτρεπτικό κελύφους $ . Από ότι κατάλαβα, είναι το ίδιο πράγμα σαν να είχα βάλει την, pause(), ακριβώς πάνω από την execvp(), στο κομμάτι της θυγατρικής διεργασίας (pid==0). Όμως, η ps, έχει δίπλα στο pid της θυγατρικής το όνομα του αρχείου του shell. Δηλαδή, αν το εκτελέσιμο αρχείο αρχικά είναι το ./a.out, στο νέο pid που εμφανίζει η ps και αντιστοιχεί στην θυγατρική έχει το ./a.out. Αν τώρα, βάλω την pause ή στείλω SIGSTOP, μετά την execpv, τότε αυτή εκτελείται κανονικά, οπότε και όταν καλείται η ps, δεν υπάρχει κάποια διεργασία σταματημένη. Όμως, σε ένα κανονικό shell του Linux, όταν δώσουμε την εντολή "ls -l &", στέλνεται η διεργασία στο παρασκήνιο, όπου εκτελείται αμέσως, αφού δεν απαιτεί να δοθεί κάποια περαιτέρω είσοδος κατά την εκτελέσει , όμως δεν ολοκληρώνει την εκτέλεση της δηλαδή δεν βγαίνει το προτρεπτικό $, στην επόμενη γραμμή. Όταν, όμως καλούνται συναρτήσεις όπου διαβάζεται είσοδος, εκεί η λειτουργιάς τους αναστέλεται και αποθηκεύονται στο παρασκήνιο με ένα pid. Θέλω, λοιπόν, να ρωτήσω τι ακριβώς, κάνουμε εμείς στο ερώτημα αυτό. Πχ, για την "ls -l &", θέλει να γίνεται ότι ακριβώς και στο πραγματικό Linux shell ή απλά να μην εκτελείται αμέσως η εντολή αυτή και να αποθηκεύεται σαν σταματημένη διεργασία. Επίσης, όποιος γνωρίζει στο συγκεκριμένο ερώτημα, ας δώσει μια βοήθεια η μια ιδέα για το πως ακριβώς θα το κάνουμε ή και κάποια παραπομπή, γιατί πολύ πιθανόν να είμαι πολύ μακριά από αυτό που ζητάει. Καταρχάς να πω πως αυτό που λογικά ζητείται από εμάς είναι να υλοποιήσουμε την ίδια λειτουργία με ένα κανονικό Linux Shell. Οπότε, όταν ο χαρακτήρας '&' υπάρχει στο τέλος μιας εντολής αυτή θα πρέπει να στέλνεται στο background. Εφόσον δεν χρειάζεται κάποια είσοδο, όμως, θα εκτελεστεί αυτόματα. Αυτό υλοποιείται πολύ εύκολα, προσωπικά απλά ελέγχω αν μία εντολή είναι να εκτελεστεί στο background (ελέγχοντας τον τελικό χαρακτήρα), και αν ναι τότε η μητρική διεργασία δεν κάνει wait() και απλά συνεχίζει κατευθείαν στο επόμενο prompt. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Xleboniaris on January 02, 2015, 18:59:12 pm ΟΚ, με αυτό που λες το έχω ήδη κάνει. Απλά, για την (πχ) "ls -l &", παίρνεις ελαφρώς διαφορετικό αποτέλεσμα από το πραγματικό shell(αφού ολοκληρώνεται πλήρως-αλλά οκ αυτό) και στην ουσία θα δεις το ίδιο αποτέλεσμα είτε έχεις το &, στο τέλος είτε όχι. Το ίδιο θα συμβεί και για όλες τι παρόμοιες εντολές, αλλά οκ και αυτό. Όταν, όμως δοκιμάσεις να τρέξεις δικά σου αρχεία, ας πούμε ένα που διαβάζει χαρακτήρα και απλά τον τυπώνει (σαν αυτά τα απλά που έχει έτοιμα στο εthmmy-testx.c), τότε τυπώνει το "promt$" , στην επόμενη γραμμή, όμως ότι εντολή και να εισάγεις παίρνει τον πρώτο χαρακτήρα και το τυπώνει. Δηλαδή, στο σημείο αυτό η συνάρτηση, που τρέχεις με "&" στο τέλος επανέρχεται στο προσκήνιο και εκτελείται κανονικά. Αντίθετα, σε ένα κανονικό shell, μένει στην αναμονή μέχρι να σταλεί σήμα ανάκλησης. Για αυτό ρώτησα, μήπως χρειάζεται να στείλουμε και κάποια σήματα, ώστε να θέσουν την θυγατρική σε αναμονή, πέρα από την μητρική διεργασία να μην κάνει wait. Μήπως, εννοεί ότι οι εντολές, που θα πρέπει να στέλνουμε στο παρασκήνιο θα είναι μόνο έτοιμες και θα εκτελούνται αμέσως και όχι δικές μας??? Επίσης, έτσι δεν θα μπορούμε να ελέγχουμε ποτέ αν υπάρχει κάποια διεργασία στο παρασκήνιο με την ps. Ελπίζω να μην κουράζω... αλλά λίγο με προβληματίζει αυτό το κομμάτι, αν και για να πω την αλήθεια στην εκφώνιση στην περίπτωση με τις διεργασίες background, στην σελίδα 4, αναφέρει ότι "το κέλυφος, μεταβαίνει απευθείας στο πρώτο βήμα, προτρέποντας το χρήστη να εισάγει την επόμενη εντολή." και δεν διευκρινίζει κάτι επιπλέον. Btw... Ας αναφέρει κάποιος μέχρο πότε είναι η οριστική ημερομηνία. Αναφέρει μια εβδομαδα πριν την εξεταστική, όμως μου φαίνεται είχε πει θα κοιτούσε να μας δώσει παραπάνω μέρες, αν θυμάμαι καλα... Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 02, 2015, 19:05:35 pm ΟΚ, με αυτό που λες το έχω ήδη κάνει. Απλά, για την (πχ) "ls -l &", παίρνεις ελαφρώς διαφορετικό αποτέλεσμα από το πραγματικό shell(αφού ολοκληρώνεται πλήρως-αλλά οκ αυτό) και στην ουσία θα δεις το ίδιο αποτέλεσμα είτε έχεις το &, στο τέλος είτε όχι. Το ίδιο θα συμβεί και για όλες τι παρόμοιες εντολές, αλλά οκ και αυτό. Όταν, όμως δοκιμάσεις να τρέξεις δικά σου αρχεία, ας πούμε ένα που διαβάζει χαρακτήρα και απλά τον τυπώνει (σαν αυτά τα απλά που έχει έτοιμα στο εthmmy-testx.c), τότε τυπώνει το "promt$" , στην επόμενη γραμμή, όμως ότι εντολή και να εισάγεις παίρνει τον πρώτο χαρακτήρα και το τυπώνει. Δηλαδή, στο σημείο αυτό η συνάρτηση, που τρέχεις με "&" στο τέλος επανέρχεται στο προσκήνιο και εκτελείται κανονικά. Αντίθετα, σε ένα κανονικό shell, μένει στην αναμονή μέχρι να σταλεί σήμα ανάκλησης. Για αυτό ρώτησα, μήπως χρειάζεται να στείλουμε και κάποια σήματα, ώστε να θέσουν την θυγατρική σε αναμονή, πέρα από την μητρική διεργασία να μην κάνει wait. Μήπως, εννοεί ότι οι εντολές, που θα πρέπει να στέλνουμε στο παρασκήνιο θα είναι μόνο έτοιμες και θα εκτελούνται αμέσως και όχι δικές μας??? Επίσης, έτσι δεν θα μπορούμε να ελέγχουμε ποτέ αν υπάρχει κάποια διεργασία στο παρασκήνιο με την ps. Ελπίζω να μην κουράζω... αλλά λίγο με προβληματίζει αυτό το κομμάτι, αν και για να πω την αλήθεια στην εκφώνιση στην περίπτωση με τις διεργασίες background, στην σελίδα 4, αναφέρει ότι "το κέλυφος, μεταβαίνει απευθείας στο πρώτο βήμα, προτρέποντας το χρήστη να εισάγει την επόμενη εντολή." και δεν διευκρινίζει κάτι επιπλέον. Ισχύει πως μια διεργασία που διαβάζει έναν χαρακτήρα και τον τυπώνει δεν δουλεύει ορθα όταν την βάλεις στο background. Αυτό μπορεί να έχει και να κάνει με το ότι μπλέκονται τα κανάλια των δύο διεργασιών (θυγατρικής που περιμένει χαρακτήρα και μητρικής που περιμένει εντολή στο prompt). Αν όμως δοκιμάσεις να βάλεις ως διεργασία στο background την εκτέλεση ενός προγράμματος που παραμένει πχ σε ένα infinite-loop θα δεις ότι εκτελείται σωστά στο background (και υπάρχει εκεί μόνιμα μέχρι να την κάνεις kill). Γενικά, πάντως, μην αγχώνεσαι τόσο για το κατά πόσο έχεις κάνει ΑΚΡΙΒΩΣ αυτό που ζητάει η εκφώνηση της εργασίας. Κάνε αυτό που καταλαβαίνεις/νομίζεις εσύ και φρόντισε να εξηγήσεις αυτό στην αναφορά. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Xleboniaris on January 02, 2015, 19:19:49 pm Αν όμως δοκιμάσεις να βάλεις ως διεργασία στο background την εκτέλεση ενός προγράμματος που παραμένει πχ σε ένα infinite-loop θα δεις ότι εκτελείται σωστά στο background (και υπάρχει εκεί μόνιμα μέχρι να την κάνεις kill). Έχεις δίκιο... Μου ξέφυγε να δοκιμάσω μια τέτοια διεργασία... Μάλλον γιατί στο εργαστήριο μας έδειξε τις διεργασίες στο Background, με εκείνα τα δύο αρχεί που διαβάζουν χαρακτήρες και όταν τα δοκίμασα εδώ έκαναν άλλο πράγμα από το πραγματικό shell. Btw... Ξέρεις μέχρι πότε είναι η οριστική ημερομηνία. Αναφέρει μια εβδομαδα πριν την εξεταστική, όμως μου φαίνεται είχε πει θα κοιτούσε να μας δώσει παραπάνω μέρες, αν θυμάμαι καλα... Απλά να το έχω υπόψη. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 03, 2015, 03:35:54 am Αν όμως δοκιμάσεις να βάλεις ως διεργασία στο background την εκτέλεση ενός προγράμματος που παραμένει πχ σε ένα infinite-loop θα δεις ότι εκτελείται σωστά στο background (και υπάρχει εκεί μόνιμα μέχρι να την κάνεις kill). Έχεις δίκιο... Μου ξέφυγε να δοκιμάσω μια τέτοια διεργασία... Μάλλον γιατί στο εργαστήριο μας έδειξε τις διεργασίες στο Background, με εκείνα τα δύο αρχεί που διαβάζουν χαρακτήρες και όταν τα δοκίμασα εδώ έκαναν άλλο πράγμα από το πραγματικό shell. Btw... Ξέρεις μέχρι πότε είναι η οριστική ημερομηνία. Αναφέρει μια εβδομαδα πριν την εξεταστική, όμως μου φαίνεται είχε πει θα κοιτούσε να μας δώσει παραπάνω μέρες, αν θυμάμαι καλα... Απλά να το έχω υπόψη. Έστειλα e-mail για να ρωτήσω κάτι σχετικό πριν μερικές μέρες και πήρα αυτήν την απάντηση: Κάτσε να δούμε με πιθανές Βουλευτικές εκλογές και αν αυτές θα επηρεάσουν τις εξετάσεις μας. Σύντομα θα ανοίξω ξεχωριστά στο Ethmmy για υποβολή. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: boone on January 05, 2015, 13:10:55 pm Σ εμένα το Ctrl-C κάνει SIGINT και όχι SIGTERM, οπότε αν κάποιος έχει θέμα με το χειρισμό του Ctrl-C, να τσεκάρει κι αυτό.
Anyway, ποια η διαφορά του εγγράφου τεκμηρίωσης και της αναφοράς σε pdf; Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 05, 2015, 13:24:35 pm Σ εμένα το Ctrl-C κάνει SIGINT και όχι SIGTERM, οπότε αν κάποιος έχει θέμα με το χειρισμό του Ctrl-C, να τσεκάρει κι αυτό. Ναι, όντως, το Ctrl+C συνδέεται με το σήμα SIGINT. Στην εκφώνηση της εργασίας το έχει γράψει λάθος ο μεταπτυχιακός.Anyway, ποια η διαφορά του εγγράφου τεκμηρίωσης και της αναφοράς σε pdf; Όπως θα δεις και σε αυτό (http://alexander.ee.auth.gr:8083/eTHMMY/archive/94/downloadFile/5889/Helpful_stuff.pdf)το .pdf που υπάρχει στο eTHMMY, σαν "έγγραφο τεκμηρίωσης" θεωρείται το doxygen documentation που θα πρέπει να γράψεις για το shell που υλοποίησες. Η "αναφορά σε pdf" θα είναι το κλασικό .pdf που θα γράψεις και θα αναλύσεις τον τρόπο που υλοποίησες το shell, βελτιώσεις αυτού, κλπ.Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: boone on January 06, 2015, 13:22:39 pm Σ εμένα το Ctrl-C κάνει SIGINT και όχι SIGTERM, οπότε αν κάποιος έχει θέμα με το χειρισμό του Ctrl-C, να τσεκάρει κι αυτό. Ναι, όντως, το Ctrl+C συνδέεται με το σήμα SIGINT. Στην εκφώνηση της εργασίας το έχει γράψει λάθος ο μεταπτυχιακός.Anyway, ποια η διαφορά του εγγράφου τεκμηρίωσης και της αναφοράς σε pdf; Όπως θα δεις και σε αυτό (http://alexander.ee.auth.gr:8083/eTHMMY/archive/94/downloadFile/5889/Helpful_stuff.pdf)το .pdf που υπάρχει στο eTHMMY, σαν "έγγραφο τεκμηρίωσης" θεωρείται το doxygen documentation που θα πρέπει να γράψεις για το shell που υλοποίησες. Η "αναφορά σε pdf" θα είναι το κλασικό .pdf που θα γράψεις και θα αναλύσεις τον τρόπο που υλοποίησες το shell, βελτιώσεις αυτού, κλπ.Thank you Exomag! Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Σα τανυστής on January 06, 2015, 22:30:20 pm Καλησπερα,
για τις διεργασιες του background που ουσιαστικα δεν τις περιμενουμε να τελειωσουν γινονται απαραιτητα zombie? Αν ναι, λογικα θα πρεπει να τα κανουμε handle με sigchld handler ? Παντως απο το εργαστηριο θυμαμαι οτι το λειτουργικο τις φροντιζει απο μονο του και οταν δινω τοπ δε φαινεται πουθενα το pid της μητρικης τους. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 06, 2015, 22:34:16 pm Καλησπερα, για τις διεργασιες του background που ουσιαστικα δεν τις περιμενουμε να τελειωσουν γινονται απαραιτητα zombie? Αν ναι, λογικα θα πρεπει να τα κανουμε handle με sigchld handler ? Παντως απο το εργαστηριο θυμαμαι οτι το λειτουργικο τις φροντιζει απο μονο του και οταν δινω τοπ δε φαινεται πουθενα το pid της μητρικης τους. Ισχύει αυτό που λες, και σε μένα το λειτουργό της φροντίζει και δεν υπάρχουν πλέον αφού γίνει το exit του shell. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Σα τανυστής on January 06, 2015, 22:51:35 pm Καλησπερα, για τις διεργασιες του background που ουσιαστικα δεν τις περιμενουμε να τελειωσουν γινονται απαραιτητα zombie? Αν ναι, λογικα θα πρεπει να τα κανουμε handle με sigchld handler ? Παντως απο το εργαστηριο θυμαμαι οτι το λειτουργικο τις φροντιζει απο μονο του και οταν δινω τοπ δε φαινεται πουθενα το pid της μητρικης τους. Ισχύει αυτό που λες, και σε μένα το λειτουργό της φροντίζει και δεν υπάρχουν πλέον αφού γίνει το exit του shell. Αρα δε κανουμε κατι εμεις και ευχαριστουμε επισημα το distro μας στο report? :P Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 07, 2015, 13:56:27 pm Καλησπερα, για τις διεργασιες του background που ουσιαστικα δεν τις περιμενουμε να τελειωσουν γινονται απαραιτητα zombie? Αν ναι, λογικα θα πρεπει να τα κανουμε handle με sigchld handler ? Παντως απο το εργαστηριο θυμαμαι οτι το λειτουργικο τις φροντιζει απο μονο του και οταν δινω τοπ δε φαινεται πουθενα το pid της μητρικης τους. Ισχύει αυτό που λες, και σε μένα το λειτουργό της φροντίζει και δεν υπάρχουν πλέον αφού γίνει το exit του shell. Αρα δε κανουμε κατι εμεις και ευχαριστουμε επισημα το distro μας στο report? :P I guess? Γενικά δεδομένου ότι η εκφώνηση ειναι αρκετά open to interpretation, κάνε απλά αυτό που νομίζεις. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Σα τανυστής on January 07, 2015, 14:39:03 pm Μακαρι να ηταν το ιδιο open και στο αν πρεπει να χρησιμοποιησουμε το doxygen, γιατι κουραζει λιγο..
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 07, 2015, 14:46:48 pm Μακαρι να ηταν το ιδιο open και στο αν πρεπει να χρησιμοποιησουμε το doxygen, γιατι κουραζει λιγο.. Ε ντάξει, δες μερικά guides/tutorials και δε χρειάζεται κάτι παραπάνω. Δεν έχεις και κανένα τεράστιο project να κάνεις document άλλωστε. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Σα τανυστής on January 07, 2015, 17:42:42 pm Γενικα μιας και το 7ο εχει αρκετα reports για οσους δε το ξερετε τσεκαρετε το lyx (http://www.lyx.org/).
Γραφεις TeX (ή LaTex βαριεμαι να ψαξω τη διαφορα, whatever) ουσιαστικά σε plaintext και το αποτελεσμα ειναι πολυ πιο ομορφο απο το απλο libreoffice. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Gru on January 07, 2015, 19:36:09 pm Σ εμένα το Ctrl-C κάνει SIGINT και όχι SIGTERM, οπότε αν κάποιος έχει θέμα με το χειρισμό του Ctrl-C, να τσεκάρει κι αυτό. Anyway, ποια η διαφορά του εγγράφου τεκμηρίωσης και της αναφοράς σε pdf; Αλλάζουμε κάτι αν κάνει SIGINT? Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 08, 2015, 03:04:06 am Σ εμένα το Ctrl-C κάνει SIGINT και όχι SIGTERM, οπότε αν κάποιος έχει θέμα με το χειρισμό του Ctrl-C, να τσεκάρει κι αυτό. Anyway, ποια η διαφορά του εγγράφου τεκμηρίωσης και της αναφοράς σε pdf; Αλλάζουμε κάτι αν κάνει SIGINT? Ο συνδυασμός Ctrl+C αφορά το SIGINT. Οπότε για να χειριστείς το συνδυασμό Ctrl+C (και να κάνεις ότι λέει η εκφώνηση της εργασίας), θα πρέπει να χειριστείς το σήμα SIGINT και όχι το σήμα SIGTERM. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Conflict on January 08, 2015, 15:06:07 pm Για τη διαχειριση των σηματων ποια μεθοδο χρησιμοποιησατε?
Την signal()? Επειδη στο manual λεει : The behavior of signal() varies across UNIX versions, and has also varied historically across different versions of Linux. Avoid its use: use sigaction(2) instead. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 08, 2015, 15:42:10 pm Για τη διαχειριση των σηματων ποια μεθοδο χρησιμοποιησατε? Την signal()? Επειδη στο manual λεει : The behavior of signal() varies across UNIX versions, and has also varied historically across different versions of Linux. Avoid its use: use sigaction(2) instead. Προσωπικά την signal(), και δεν είχα κανένα πρόβλημα. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Σα τανυστής on January 08, 2015, 17:00:10 pm Για τη διαχειριση των σηματων ποια μεθοδο χρησιμοποιησατε? Την signal()? Επειδη στο manual λεει : The behavior of signal() varies across UNIX versions, and has also varied historically across different versions of Linux. Avoid its use: use sigaction(2) instead. Και εγω, μιας και ειχα την εντυπωση οτι ειναι POSIX. Για windows συστηματα καλυτερα sigaction. Δεν ειναι πολλη δουλεια παραπανω νομιζω θα μπλεξεις λιγο με struct, αλλα σιγα Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: sof_s on January 09, 2015, 14:34:07 pm Όταν βάζω ένα πρόγραμμα στο background, π.χ. το testx.c που ζητάει χαρακτήρα, ότι εντολή και να πατήσω μετά δεν μου την εκτελεί. Κάνει parse κτλ, πηγαίνει απευθείας στο επόμενο Loop και ξαναζητάει εντολή. Επίσης, δεν μπορεί να εκτελεστεί το jobs με το execvp γιατί λέει "no such file or directory", άρα δεν μπορώ να επιστρέψω την διεργασία στο προσκήνιο, αλλά έτσι και αλλιώς, απ' ότι κατάλαβα, δεν ζητάει πουθενά να συμπεριλάβουμε το jobs στις εντολές που εκτελεί το shell. Tι μπορεί να φταίει για αυτά;
edit: Βασικά, το jobs δείχνει μία λίστα την οποία πρέπει να δημιουργούμε εμείς; Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Gru on January 09, 2015, 18:41:43 pm Να ρωτήσω όταν τρέχω μια εντολή στο παρασκήνιο με το & πρέπει να μου εμφανίζει αποτέλεσμα?
Δηλαδή αν έχω ls & στην οθόνη θα μου βγάλει το αποτέλεσμα του ls? Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: sof_s on January 09, 2015, 18:50:38 pm Να ρωτήσω όταν τρέχω μια εντολή στο παρασκήνιο με το & πρέπει να μου εμφανίζει αποτέλεσμα? Δηλαδή αν έχω ls & στην οθόνη θα μου βγάλει το αποτέλεσμα του ls? Θα βγάλει αποτέλεσμα γιατί δεν περιμένει για κάποια είσοδο. Βάλ' το να τρέξει στον υπολογιστή σου για να δεις τι κάνει. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 09, 2015, 19:40:43 pm Όταν βάζω ένα πρόγραμμα στο background, π.χ. το testx.c που ζητάει χαρακτήρα, ότι εντολή και να πατήσω μετά δεν μου την εκτελεί. Κάνει parse κτλ, πηγαίνει απευθείας στο επόμενο Loop και ξαναζητάει εντολή. Επίσης, δεν μπορεί να εκτελεστεί το jobs με το execvp γιατί λέει "no such file or directory", άρα δεν μπορώ να επιστρέψω την διεργασία στο προσκήνιο, αλλά έτσι και αλλιώς, απ' ότι κατάλαβα, δεν ζητάει πουθενά να συμπεριλάβουμε το jobs στις εντολές που εκτελεί το shell. Tι μπορεί να φταίει για αυτά; edit: Βασικά, το jobs δείχνει μία λίστα την οποία πρέπει να δημιουργούμε εμείς; Η εργασία δεν λέει πουθενά να υλοποιήσεις την εντολή jobs, οπότε δε νομίζω πως πρέπει να σε απασχολεί το συγκεκριμένο θέμα. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: jthois on January 09, 2015, 19:43:12 pm Όταν βάζω ένα πρόγραμμα στο background, π.χ. το testx.c που ζητάει χαρακτήρα, ότι εντολή και να πατήσω μετά δεν μου την εκτελεί. Κάνει parse κτλ, πηγαίνει απευθείας στο επόμενο Loop και ξαναζητάει εντολή. Επίσης, δεν μπορεί να εκτελεστεί το jobs με το execvp γιατί λέει "no such file or directory", άρα δεν μπορώ να επιστρέψω την διεργασία στο προσκήνιο, αλλά έτσι και αλλιώς, απ' ότι κατάλαβα, δεν ζητάει πουθενά να συμπεριλάβουμε το jobs στις εντολές που εκτελεί το shell. Tι μπορεί να φταίει για αυτά; Μια διεργασία που είναι στο παρασκήνιο μπορεί να τυπώνει μηνύματα αλλά ΔΕΝ μπορεί να διαβάζει από το shell. Το jobs γιατί σου χρειάζεται;Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: sof_s on January 09, 2015, 19:49:01 pm Ναι το κατάλαβα, δεν είχα δει ότι τερματίζει με το exit() και αναρωτιόμουν πώς θα μπορούσα να τις τερματίσω. Εν τω μεταξύ, κάνει κάτι άκυρα το πρόγραμμα. Είχα κάπου να τυπώνει κάτι για να ξέρω ότι δουλεύει σωστά μία μεταβλητή που είχα βάλει. Όταν σβήνω την printf το loop τρέχει μόνο 1 φορά και στην 2η εντολή βγάζει segmentation fault. Είμαι σίγουρη ότι δεν αλλάζω τίποτα άλλο. Το ίδιο έκανε και όταν άλλαζα την σειρά κάποιων εντολών π.χ. κάπου έκανα πρώτα *args++ και μετά κάτι άλλο και δεν το έτρεχε. Όταν τα έβαλα ανάποδα τα έτρεχε. Τι παίζει με αυτό;
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Conflict on January 09, 2015, 20:20:24 pm Ναι το κατάλαβα, δεν είχα δει ότι τερματίζει με το exit() και αναρωτιόμουν πώς θα μπορούσα να τις τερματίσω. Εν τω μεταξύ, κάνει κάτι άκυρα το πρόγραμμα. Είχα κάπου να τυπώνει κάτι για να ξέρω ότι δουλεύει σωστά μία μεταβλητή που είχα βάλει. Όταν σβήνω την printf το loop τρέχει μόνο 1 φορά και στην 2η εντολή βγάζει segmentation fault. Είμαι σίγουρη ότι δεν αλλάζω τίποτα άλλο. Το ίδιο έκανε και όταν άλλαζα την σειρά κάποιων εντολών π.χ. κάπου έκανα πρώτα *args++ και μετά κάτι άλλο και δεν το έτρεχε. Όταν τα έβαλα ανάποδα τα έτρεχε. Τι παίζει με αυτό; Το segmentation fault σημαινει οτι σε καποιον πινακα βγηκες εκτος οριων. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: sof_s on January 09, 2015, 20:32:08 pm Ναι το κατάλαβα, δεν είχα δει ότι τερματίζει με το exit() και αναρωτιόμουν πώς θα μπορούσα να τις τερματίσω. Εν τω μεταξύ, κάνει κάτι άκυρα το πρόγραμμα. Είχα κάπου να τυπώνει κάτι για να ξέρω ότι δουλεύει σωστά μία μεταβλητή που είχα βάλει. Όταν σβήνω την printf το loop τρέχει μόνο 1 φορά και στην 2η εντολή βγάζει segmentation fault. Είμαι σίγουρη ότι δεν αλλάζω τίποτα άλλο. Το ίδιο έκανε και όταν άλλαζα την σειρά κάποιων εντολών π.χ. κάπου έκανα πρώτα *args++ και μετά κάτι άλλο και δεν το έτρεχε. Όταν τα έβαλα ανάποδα τα έτρεχε. Τι παίζει με αυτό; Το segmentation fault σημαινει οτι σε καποιον πινακα βγηκες εκτος οριων. Το ξέρω ότι αυτό σημαίνει αλλά την 1η φορά γιατί το κάνει; Στα ίδια όρια είμαι σε κάθε Loop, δεν αλλάζει κάτι... :( edit: Εντάξει, σε έναν pointer σκάλωνε που πάλι δεν καταλαβαίνω γιατί αλλά τελοσπαντων... Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: boone on January 10, 2015, 16:27:41 pm Ναι το κατάλαβα, δεν είχα δει ότι τερματίζει με το exit() και αναρωτιόμουν πώς θα μπορούσα να τις τερματίσω. Εν τω μεταξύ, κάνει κάτι άκυρα το πρόγραμμα. Είχα κάπου να τυπώνει κάτι για να ξέρω ότι δουλεύει σωστά μία μεταβλητή που είχα βάλει. Όταν σβήνω την printf το loop τρέχει μόνο 1 φορά και στην 2η εντολή βγάζει segmentation fault. Είμαι σίγουρη ότι δεν αλλάζω τίποτα άλλο. Το ίδιο έκανε και όταν άλλαζα την σειρά κάποιων εντολών π.χ. κάπου έκανα πρώτα *args++ και μετά κάτι άλλο και δεν το έτρεχε. Όταν τα έβαλα ανάποδα τα έτρεχε. Τι παίζει με αυτό; Το segmentation fault σημαινει οτι σε καποιον πινακα βγηκες εκτος οριων. Το ξέρω ότι αυτό σημαίνει αλλά την 1η φορά γιατί το κάνει; Στα ίδια όρια είμαι σε κάθε Loop, δεν αλλάζει κάτι... :( edit: Εντάξει, σε έναν pointer σκάλωνε που πάλι δεν καταλαβαίνω γιατί αλλά τελοσπαντων... Κι εγώ το έπαθα αυτό. Είχα δηλώσει char *str, ενώ θα έπρεπε να τη δηλώσω ως char str[1024].. Γενικά, τέτοια χαζά συμβαίνουν. Btw, που την ανεβάζουμε; Δεν έχει βγει ακόμα καμιά φόρμα έτσι; Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: et3rn1ty on January 10, 2015, 19:54:39 pm Btw, που την ανεβάζουμε; Δεν έχει βγει ακόμα καμιά φόρμα έτσι; Δεν την ανεβάζουμε στις ομάδες εργαστηρίου? Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Gru on January 10, 2015, 20:23:36 pm Στο ethmmy θα την ανεβάσουμε άλλα δεν έχει κάνει ακόμα τη φόρμα.
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Kodi on January 10, 2015, 22:00:37 pm Μπορεί κάποιος να βοηθήσει με το doxygen γιατί ενώ κάνω τις οδηγίες εγκατάστασης δε μπορώ να βγάλω άκρη..!! ::)
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: MG9S on January 11, 2015, 18:45:16 pm παιδια οσο αφορα το κομμάτι της εντολής cd υπάρχει κάποιο συγκεκριμένο κομμάτι που χρειάζεται προσοχή? επειδη στην περίπτωση τη δικια μου έχω γράψει τον κώδικα απλα οταν παταω cd και το directory δεν πάει που8ενα. Σε περίπτωση που βάλω λά8ος directory αυτο αναγνωρίζεται . βσκ μήπως χρειάζεται να απο8ηκεύσω πουθενά paths ?
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 11, 2015, 19:15:30 pm παιδια οσο αφορα το κομμάτι της εντολής cd υπάρχει κάποιο συγκεκριμένο κομμάτι που χρειάζεται προσοχή? επειδη στην περίπτωση τη δικια μου έχω γράψει τον κώδικα απλα οταν παταω cd και το directory δεν πάει που8ενα. Σε περίπτωση που βάλω λά8ος directory αυτο αναγνωρίζεται . βσκ μήπως χρειάζεται να απο8ηκεύσω πουθενά paths ? Για να κάνεις cd, απλά καλείς την chdir() με όρισμα το path sto οποίο θέλεις να πας. Το directory που βρίσκεσαι θα πρέπει να αλλάζει. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: MG9S on January 11, 2015, 19:29:01 pm Ναι πανω σ αυτο δουλεψα αλλα δεν μετακινείται απο το κέλυφος που βρισκομαι.. :/
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 11, 2015, 19:31:11 pm Ναι πανω σ αυτο δουλεψα αλλα δεν μετακινείται απο το κέλυφος που βρισκομαι.. :/ Δηλαδή αφού καλέσεις την chdir και έπειτα κανεις πχ ls θα σου βγάλει το ίδιο directory που ήσουν πριν; Η chdir εκτελείται κανονικά χωρίς errors; Κάνεις έλεγχο για αυτό; Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: MG9S on January 11, 2015, 19:36:30 pm Ναι αυτο γίνεται. βσκ ο έλεγχος που κάνω είναι αν ειναι ελλειπές τα ορίσματα που μπαίνουν στην εντολή του terminal. βσκ μιλάς για errnο?
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 11, 2015, 19:51:10 pm Ναι αυτο γίνεται. βσκ ο έλεγχος που κάνω είναι αν ειναι ελλειπές τα ορίσματα που μπαίνουν στην εντολή του terminal. βσκ μιλάς για errnο? Ναι, για errno. Η chdir επιστρέφει μια τιμή ανάλογα με το αν έγινε με επιτυχία ή όχι το cd. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Σα τανυστής on January 11, 2015, 19:53:04 pm Εγω εκανα ελεγχο για το working directory μου με την getcwd() (http://linux.die.net/man/3/getcwd).
Μπορει να αλλαζεις οντως αλλα να μη το βλεπεις. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: MG9S on January 11, 2015, 20:02:47 pm θα το ξαναψάξω παιδιά ευχαριστώ 8))
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: jimPster on January 11, 2015, 21:08:27 pm ΓΙΑ το chdir(), σιγουρα πρεπει να λειτουργει πχ το /Desktop
αν αντι γραψουμε /Des* πρεπει να λειτουργει? Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: jimPster on January 12, 2015, 00:54:03 am Ας κανω αλλες 2 ακομα ερωτησεις:
1.Για την εκτέλεση ενός προγράμματος θα πρέπει να βρίσκεται η διαδρομή (path) αυτού και λεει px ειτε ps ειτε bin/ps να τρεχει το προγραμμα ... αυτο γιατι το αναφερει δεν εχω κανει τπτ για να βρω το path και τρεχουν και τα 2 .Γιατι αραγε το αναφερει? 2. Οταν παταω ls & κανει το ιδιο με το κανονικο terminal με τη διαφορα οταν παταω ps μου εμφανιζεται ως defunct... συμβαινει και σε σας αυτο ? η πρεπει να εμφανιζεται σαν done Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: sof_s on January 12, 2015, 12:16:36 pm Μπορεί κάποιος να βοηθήσει με το doxygen γιατί ενώ κάνω τις οδηγίες εγκατάστασης δε μπορώ να βγάλω άκρη..!! ::) +1! Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 12, 2015, 12:35:02 pm Μπορεί κάποιος να βοηθήσει με το doxygen γιατί ενώ κάνω τις οδηγίες εγκατάστασης δε μπορώ να βγάλω άκρη..!! ::) +1!Πείτε λίγο λεπτομέριες όμως. Τι OS έχετε, τι ακριβώς πρόβλημα έχετε στην εγκατάσταση, κλπ... Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: sof_s on January 12, 2015, 12:43:56 pm Μπορεί κάποιος να βοηθήσει με το doxygen γιατί ενώ κάνω τις οδηγίες εγκατάστασης δε μπορώ να βγάλω άκρη..!! ::) +1!Πείτε λίγο λεπτομέριες όμως. Τι OS έχετε, τι ακριβώς πρόβλημα έχετε στην εγκατάσταση, κλπ... Καταρχάς, αυτά που λέει εδώ http://www.stack.nl/~dimitri/doxygen/manual/install.html κάτω από το "To take full advantage of doxygen's features the following additional tools should be installed" είναι απαραίτητα, έτσι; Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 12, 2015, 12:54:22 pm Μπορεί κάποιος να βοηθήσει με το doxygen γιατί ενώ κάνω τις οδηγίες εγκατάστασης δε μπορώ να βγάλω άκρη..!! ::) +1!Πείτε λίγο λεπτομέριες όμως. Τι OS έχετε, τι ακριβώς πρόβλημα έχετε στην εγκατάσταση, κλπ... Καταρχάς, αυτά που λέει εδώ http://www.stack.nl/~dimitri/doxygen/manual/install.html κάτω από το "To take full advantage of doxygen's features the following additional tools should be installed" είναι απαραίτητα, έτσι; Όχι, όλα αυτά που αναφέρει από εκεί και κάτω είναι προαιρετικά εργαλεία. Μπορείς, δηλαδή, να κάνεις τη δουλειά σου και χωρίς αυτά. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: olgatsim on January 12, 2015, 13:03:17 pm Όσων αφορά τις διεργασίες, θέλει να μπορούμε να επαναφέρουμε στο foreground αυτές που έχουν μπει σε background ή δεν μας ενδιαφέρει;;; Αν δηλαδή κάποια διεργασία στο background περιμένει είσοδο, την αφήνουμε να περιμένει μέχρι να κάνουμε exit το shell ή kill τη διεργασία; :/ Γιατί από την εκφώνηση δεν μπορώ να πω ότι έβγαλα και πολύ άκρη με το τι ακριβώς θέλει...
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 12, 2015, 13:10:02 pm Όσων αφορά τις διεργασίες, θέλει να μπορούμε να επαναφέρουμε στο foreground αυτές που έχουν μπει σε background ή δεν μας ενδιαφέρει;;; Αν δηλαδή κάποια διεργασία στο background περιμένει είσοδο, την αφήνουμε να περιμένει μέχρι να κάνουμε exit το shell ή kill τη διεργασία; :/ Γιατί από την εκφώνηση δεν μπορώ να πω ότι έβγαλα και πολύ άκρη με το τι ακριβώς θέλει... Δεν αναφέρει πουθενά να υλοποιήσεις τη δυνατόητα να επαναφέρεις μια διεργασία από το background στο foreground. Οπότε ένα background process (που δεν μπορεί να τερματίσει από μόνο του, πχ αν έχει infinite loop) θα παραμένει στο background μέχρι να τερματίσεις το shell σου. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: olgatsim on January 12, 2015, 13:12:30 pm Όσων αφορά τις διεργασίες, θέλει να μπορούμε να επαναφέρουμε στο foreground αυτές που έχουν μπει σε background ή δεν μας ενδιαφέρει;;; Αν δηλαδή κάποια διεργασία στο background περιμένει είσοδο, την αφήνουμε να περιμένει μέχρι να κάνουμε exit το shell ή kill τη διεργασία; :/ Γιατί από την εκφώνηση δεν μπορώ να πω ότι έβγαλα και πολύ άκρη με το τι ακριβώς θέλει... Δεν αναφέρει πουθενά να υλοποιήσεις τη δυνατόητα να επαναφέρεις μια διεργασία από το background στο foreground. Οπότε ένα background process (που δεν μπορεί να τερματίσει από μόνο του, πχ αν έχει infinite loop) θα παραμένει στο background μέχρι να τερματίσεις το shell σου. Τέλεια! :P Ευχαριστώ! :) Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: sof_s on January 12, 2015, 14:06:24 pm Μπορεί κάποιος να βοηθήσει με το doxygen γιατί ενώ κάνω τις οδηγίες εγκατάστασης δε μπορώ να βγάλω άκρη..!! ::) +1!Πείτε λίγο λεπτομέριες όμως. Τι OS έχετε, τι ακριβώς πρόβλημα έχετε στην εγκατάσταση, κλπ... Καταρχάς, αυτά που λέει εδώ http://www.stack.nl/~dimitri/doxygen/manual/install.html κάτω από το "To take full advantage of doxygen's features the following additional tools should be installed" είναι απαραίτητα, έτσι; Όχι, όλα αυτά που αναφέρει από εκεί και κάτω είναι προαιρετικά εργαλεία. Μπορείς, δηλαδή, να κάνεις τη δουλειά σου και χωρίς αυτά. Όταν πατάω make: /usr/bin/install -d /usr/local/bin /usr/bin/install -d /usr/local/doc/doxygen /usr/bin/install: αδύνατη η δημιουργία καταλόγου «/usr/local/doc»: Άρνηση πρόσβασης make: *** [install] Error 1 Να το κάνω με sudo? Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: olgatsim on January 12, 2015, 15:02:33 pm Όταν κάνουμε fork (με την εντολή pid = fork(); ) αν pid<1 έχουμε σφάλμα, αν pid==0 είμαστε στη θυγατρική και συνεχίζουμε με execvp κλπ κλπ ..else είμαστε στην parent process και κάνουμε τι; :/ Μάλλον είναι βλακεία αλλά αν μπορεί κάποιος να μου το εξηγήσει γιατί έχω σκαλώσει λίγο...
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: jimPster on January 12, 2015, 15:20:33 pm Όταν κάνουμε fork (με την εντολή pid = fork(); ) αν pid<1 έχουμε σφάλμα, αν pid==0 είμαστε στη θυγατρική και συνεχίζουμε με execvp κλπ κλπ ..else είμαστε στην parent process και κάνουμε τι; :/ Μάλλον είναι βλακεία αλλά αν μπορεί κάποιος να μου το εξηγήσει γιατί έχω σκαλώσει λίγο... Σε αυτα που μας ζηταει , η parent θα κανει wait()/waitpid() για child process στο foreground και για child process στο background τπτ.Δηλ στο else θα βαλεις ενα ελεγχο για να δεις αν ειναι η child process sto fg η στο bg. Αν ειναι στο fg θα κανεις wait().Αν ειναι στο bg δν θα κανεις τπτ. Τουλαχιστον ετσι το κανα εγω. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: olgatsim on January 12, 2015, 15:21:40 pm Όταν κάνουμε fork (με την εντολή pid = fork(); ) αν pid<1 έχουμε σφάλμα, αν pid==0 είμαστε στη θυγατρική και συνεχίζουμε με execvp κλπ κλπ ..else είμαστε στην parent process και κάνουμε τι; :/ Μάλλον είναι βλακεία αλλά αν μπορεί κάποιος να μου το εξηγήσει γιατί έχω σκαλώσει λίγο... Σε αυτα που μας ζηταει , η parent θα κανει wait()/waitpid() για child process στο foreground και για child process στο background τπτ.Δηλ στο else θα βαλεις ενα ελεγχο για να δεις αν ειναι η child process sto fg η στο bg. Κι εγώ αυτό είχα στο μυαλό μου... Ευχαριστώ! :) Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: jimPster on January 12, 2015, 15:28:26 pm Επισης για να σε γλιτωσω απο χρονο πρεπει να αφαιρεσεις το & απο τις εντολες(Εγω το χα ξεχασει και δν ετρεχε σωστα η εντολη) .Δηλ θα κανεις
ελεγχο πιο πριν για & (υπαρχει? βαζεις ενα flag και το αφαιρεις απο τις εντολες γτ αλλιως δν θα τρεχει η εντολη σωστα...και με το flag αυτο αργοτερα κανεις ελεγχο στο else) Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: olgatsim on January 12, 2015, 15:35:10 pm Επισης για να σε γλιτωσω απο χρονο πρεπει να αφαιρεσεις το & απο τις εντολες(Εγω το χα ξεχασει και δν ετρεχε σωστα η εντολη) .Δηλ θα κανεις ελεγχο πιο πριν για & (υπαρχει? βαζεις ενα flag και το αφαιρεις απο τις εντολες γτ αλλιως δν θα τρεχει η εντολη σωστα...και με το flag αυτο αργοτερα κανεις ελεγχο στο else) Το χω κάνει ήδη... ;) ευχαριστώ! Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: LordOdy on January 13, 2015, 17:06:32 pm Παιδιά να ρωτήσω, όταν πατάμε "exit" στο shell μας, θα πρέπει αυτό να τερματίζει πρώτα όλες τις background διεργασίες; Και αν ναι, έχει κανείς κάποιο hint γαι το πως υλοποιείται αυτό; Thanks
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Dealan on January 13, 2015, 17:11:40 pm Δεν χρειάζεται, κλείνουν αυτόματα και δεν αναφέρει κάτι περί αυτούη εκφώνηση.
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: olgatsim on January 14, 2015, 23:05:47 pm Τις ενεργές διεργασίες, όνομα και pid, πρέπει να τις αποθηκεύουμε με κάποιο τρόπο; Εγώ προς το παρόν κάνω fork και αν είναι για background απλά κάνει wait η μητρική.. τελειώνει, εάν δεν περιμένει κάποια είσοδο και γενικά δεν ξανασχολούμαι μαζί της. Σωστά;
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Dealan on January 14, 2015, 23:23:52 pm Τις ενεργές διεργασίες, όνομα και pid, πρέπει να τις αποθηκεύουμε με κάποιο τρόπο; Εγώ προς το παρόν κάνω fork και αν είναι για background απλά κάνει wait η μητρική.. τελειώνει, εάν δεν περιμένει κάποια είσοδο και γενικά δεν ξανασχολούμαι μαζί της. Σωστά; Φαντάζομαι στο bold εννοείς ότι δεν κάνει wait αν είναι για background. Κατά τα άλλα ναι, δεν ασχολείσαι καθόλου. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: tsakos on January 14, 2015, 23:32:17 pm Καμία βοήθεια με το doxygen ?? Προσπαθώ να το βάλω στα Ubuntu ακολουθώντας τις οδηγίες απ το site αλλά δεν βλέπω φως στο τουνελ...
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: jimPster on January 14, 2015, 23:46:47 pm Καμία βοήθεια με το doxygen ?? Προσπαθώ να το βάλω στα Ubuntu ακολουθώντας τις οδηγίες απ το site αλλά δεν βλέπω φως στο τουνελ... git clone https://github.com/doxygen/doxygen.git cd doxygen μετα ./configure (Εδω πiο πιθανον να λειπουν καποια πραγματα σου λεει ποια---not found ..εγκατεστησε τα και ξανα configure -----ενα απο αυτα που λειπουν δν το εγκαταστησα (ηταν μεγαλο) για γραφικο περιβαλλον μ φαινεται θα καταλαβεις οτι εισαι κομπλε οταν τρεξει το make) make τελος make install (sudo αν χρειαστει) καπως ετσι θυμαμαι οτι εκανα Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: pikachu93 on January 15, 2015, 04:48:08 am Το γράφω γιατί με ταλαιπώρησε αρκετά, προφανώς με βάση τη δικιά μου υλοποίηση αλλά μπορεί κάποιος να είχε το ίδιο πρόβλημα....
Αποφύγετε την χρήση της wait() και αντί αυτής χρησιμοποιήστε την waitpid() όταν εκτελείται διαδικασία στο foreground. Η waitpid επιτρέπει στην μητρική να περιμένει μια συγκεκριμένη διεργασία ενώ η wait οποιαδήποτε. Άμα βάλεις να εκτελεστεί μια διεργασία στο background με το & αρχικά και η parent process δεν περιμένει τότε την επόμενη φορά που θα εκτελέσεις κάτι στο foreground η wait της μητρικής θα πιάσει αυτή που είναι στο background ενώ η διεργασία της παρούσας εκτέλεσης θα μπει στο background γιατί δεν έχει πλέον wait. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: tsakos on January 16, 2015, 22:09:43 pm Ξέρουμε εαν το doxygen είναι απαραίτητο? Γιατί κοντεύω να ξοδέψω περισσότερο χρόνο σε αυτό απ ΄ότι στον κώδικα. Ρωτάω γιατί παράκουσα τον Καλογιάννη να λέει σε κάποιον οτι μπορούμε να κάνουμε την τεκμηρίωση με τον κλασσικό τρόπο.. (βλ. pdf) Αν ξέρει κανείς κάτι πιο βέβαιο ας ενημερώσει. Ευχαριστώ.
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 16, 2015, 22:10:46 pm Ξέρουμε εαν το doxygen είναι απαραίτητο? Γιατί κοντεύω να ξοδέψω περισσότερο χρόνο σε αυτό απ ΄ότι στον κώδικα. Ρωτάω γιατί παράκουσα τον Καλογιάννη να λέει σε κάποιον οτι μπορούμε να κάνουμε την τεκμηρίωση με τον κλασσικό τρόπο.. (βλ. pdf) Αν ξέρει κανείς κάτι πιο βέβαιο ας ενημερώσει. Ευχαριστώ. Δεν έχει πει κάτι τέτοιο. Γενικά θέλει και doxygen, αλλά και .pdf Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: c0ndemn3d on January 16, 2015, 23:27:50 pm Pipelining δεν χρειάζεται να χειριζόμαστε, έτσι; Και γενικά σύνθετες εντολές όπως πχ
echo qq > qq.txt Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 16, 2015, 23:29:21 pm Pipelining δεν χρειάζεται να χειριζόμαστε, έτσι; Όχι, δεν λέει τίποτα τέτοιο η εκφώνηση. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: c0ndemn3d on January 16, 2015, 23:31:04 pm Pipelining δεν χρειάζεται να χειριζόμαστε, έτσι; Όχι, δεν λέει τίποτα τέτοιο η εκφώνηση. danke Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: vlad on January 17, 2015, 04:13:37 am Pipelining δεν χρειάζεται να χειριζόμαστε, έτσι; Και γενικά σύνθετες εντολές όπως πχ echo qq > qq.txt Pipeling δεν ξερω αλλα το παραδειγμα που εδωσες μου δουλευει. Ξέρουμε εαν το doxygen είναι απαραίτητο? Γιατί κοντεύω να ξοδέψω περισσότερο χρόνο σε αυτό απ ΄ότι στον κώδικα. Ρωτάω γιατί παράκουσα τον Καλογιάννη να λέει σε κάποιον οτι μπορούμε να κάνουμε την τεκμηρίωση με τον κλασσικό τρόπο.. (βλ. pdf) Αν ξέρει κανείς κάτι πιο βέβαιο ας ενημερώσει. Ευχαριστώ. Δεν έχει πει κάτι τέτοιο. Γενικά θέλει και doxygen, αλλά και .pdf Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: xameno kormi on January 17, 2015, 17:04:11 pm η προθεσμια ειναι μεχρι 31 ?
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: c0ndemn3d on January 17, 2015, 17:16:35 pm Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: xameno kormi on January 17, 2015, 17:27:23 pm κατι μας ειχε πει στο εργαστηριο πριν τις γιορτες οτι θα παρει παραταση και μεσα στην εξεταστικη λεω μηπως το ξαναπε τωρα σε κανα εργαστηριο γ σιγουρα γιατι ανακοινωση δεν ειδα
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 17, 2015, 17:47:01 pm κατι μας ειχε πει στο εργαστηριο πριν τις γιορτες οτι θα παρει παραταση και μεσα στην εξεταστικη λεω μηπως το ξαναπε τωρα σε κανα εργαστηριο γ σιγουρα γιατι ανακοινωση δεν ειδα Στο εργαστήριο τη Δευτέρα (12/01/2014) είπε ότι λογικά θα πάρει παράταση μιας βδομάδας. Αν δεν βγει σχετικά ανακοίνωση βέβαια, δεν ισχύει αυτό. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: olgatsim on January 17, 2015, 18:09:37 pm Το σήμα SIGCHLD το βάζουμε σε λειτουργία default ( signal(SIGCHLD, SIG_DFL) ) ή έστω SIG_IGN ή πρέπει να φτιάξουμε handler?? Και επίσης, ο handler του SIGINT για το Ctrl^C απλά θα τυπώνει ένα μήνυμα τερματισμού και θα κάνει kill τις ενεργές διεργασίες;
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 17, 2015, 18:14:34 pm Το σήμα SIGCHLD το βάζουμε σε λειτουργία default ( signal(SIGCHLD, SIG_DFL) ) ή έστω SIG_IGN ή πρέπει να φτιάξουμε handler?? Και επίσης, ο handler του SIGINT για το Ctrl^C απλά θα τυπώνει ένα μήνυμα τερματισμού και θα κάνει kill τις ενεργές διεργασίες; Το πως θα το υλοποιήσεις εξαρτάται από το πως έχεις σκεφτεί/υλοποιήσει εσύ το πρόβλημα. Το σίγουρο είναι πως όταν πατάς Ctrl+C θα πρέπει να τερματίζει όποια διεργασία (αν υπάρχει κάποια) τρέχει εκείνη τη στιγμή στο foreground (η οποία προφανώς θα είναι child process του κεντρικού Shell) και να εμφανίζεται ένα μήνυμα. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: olgatsim on January 17, 2015, 18:32:38 pm Το σήμα SIGCHLD το βάζουμε σε λειτουργία default ( signal(SIGCHLD, SIG_DFL) ) ή έστω SIG_IGN ή πρέπει να φτιάξουμε handler?? Και επίσης, ο handler του SIGINT για το Ctrl^C απλά θα τυπώνει ένα μήνυμα τερματισμού και θα κάνει kill τις ενεργές διεργασίες; Το πως θα το υλοποιήσεις εξαρτάται από το πως έχεις σκεφτεί/υλοποιήσει εσύ το πρόβλημα. Το σίγουρο είναι πως όταν πατάς Ctrl+C θα πρέπει να τερματίζει όποια διεργασία (αν υπάρχει κάποια) τρέχει εκείνη τη στιγμή στο foreground (η οποία προφανώς θα είναι child process του κεντρικού Shell) και να εμφανίζεται ένα μήνυμα. Δοκίμασα μόλις να κάνω kill(0, SIGKILL) αλλά όταν πατάω CTRL^C τερματίζει και το shell μου γιατί το βλέπει σαν διεργασία του terminal.. Πρέπει μήπως να κάνω κάποιο ιδιαίτερο initialize ή κάτι;;; :/ Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 17, 2015, 18:46:00 pm Το σήμα SIGCHLD το βάζουμε σε λειτουργία default ( signal(SIGCHLD, SIG_DFL) ) ή έστω SIG_IGN ή πρέπει να φτιάξουμε handler?? Και επίσης, ο handler του SIGINT για το Ctrl^C απλά θα τυπώνει ένα μήνυμα τερματισμού και θα κάνει kill τις ενεργές διεργασίες; Το πως θα το υλοποιήσεις εξαρτάται από το πως έχεις σκεφτεί/υλοποιήσει εσύ το πρόβλημα. Το σίγουρο είναι πως όταν πατάς Ctrl+C θα πρέπει να τερματίζει όποια διεργασία (αν υπάρχει κάποια) τρέχει εκείνη τη στιγμή στο foreground (η οποία προφανώς θα είναι child process του κεντρικού Shell) και να εμφανίζεται ένα μήνυμα. Δοκίμασα μόλις να κάνω kill(0, SIGKILL) αλλά όταν πατάω CTRL^C τερματίζει και το shell μου γιατί το βλέπει σαν διεργασία του terminal.. Πρέπει μήπως να κάνω κάποιο ιδιαίτερο initialize ή κάτι;;; :/ Δε θα έπρεπε να κάνει η μητρική διεργασία kill(child_pid,SIGKILL); Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: olgatsim on January 17, 2015, 19:02:06 pm Το σήμα SIGCHLD το βάζουμε σε λειτουργία default ( signal(SIGCHLD, SIG_DFL) ) ή έστω SIG_IGN ή πρέπει να φτιάξουμε handler?? Και επίσης, ο handler του SIGINT για το Ctrl^C απλά θα τυπώνει ένα μήνυμα τερματισμού και θα κάνει kill τις ενεργές διεργασίες; Το πως θα το υλοποιήσεις εξαρτάται από το πως έχεις σκεφτεί/υλοποιήσει εσύ το πρόβλημα. Το σίγουρο είναι πως όταν πατάς Ctrl+C θα πρέπει να τερματίζει όποια διεργασία (αν υπάρχει κάποια) τρέχει εκείνη τη στιγμή στο foreground (η οποία προφανώς θα είναι child process του κεντρικού Shell) και να εμφανίζεται ένα μήνυμα. Δοκίμασα μόλις να κάνω kill(0, SIGKILL) αλλά όταν πατάω CTRL^C τερματίζει και το shell μου γιατί το βλέπει σαν διεργασία του terminal.. Πρέπει μήπως να κάνω κάποιο ιδιαίτερο initialize ή κάτι;;; :/ Δε θα έπρεπε να κάνει η μητρική διεργασία kill(child_pid,SIGKILL); Αυτό βασικά το κατάφερα... Βλακεία έκανα..Αλλά ευχαριστώ! Να κάνω μία άλλη ερώτηση όμως...Θα πρέπει να χρησιμοποιήσω καθόλου συναρτήσεις όπως setpgid() ή tcsetpgrp() και κάτι άλλες που είναι για παρόμοιους σκοπούς,;; Προς το παρόν το χω κάνει χωρίς αυτά και δουκλεύει καλά νομίζω, τουλάχιστον γι'αυτό που ζητάει η εργασία.... Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: pikachu93 on January 17, 2015, 19:10:20 pm Όταν βάζω μια διεργασία στο background πχ ls -l & και αυτή τυπώνει αυτά που πρέπει μετά όταν πατάω ps μου βγάζει δίπλα από την διεργασία ένα <defunct>. Είχε κανείς παρόμοιο πρόβλημα?
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 17, 2015, 19:52:55 pm Το σήμα SIGCHLD το βάζουμε σε λειτουργία default ( signal(SIGCHLD, SIG_DFL) ) ή έστω SIG_IGN ή πρέπει να φτιάξουμε handler?? Και επίσης, ο handler του SIGINT για το Ctrl^C απλά θα τυπώνει ένα μήνυμα τερματισμού και θα κάνει kill τις ενεργές διεργασίες; Το πως θα το υλοποιήσεις εξαρτάται από το πως έχεις σκεφτεί/υλοποιήσει εσύ το πρόβλημα. Το σίγουρο είναι πως όταν πατάς Ctrl+C θα πρέπει να τερματίζει όποια διεργασία (αν υπάρχει κάποια) τρέχει εκείνη τη στιγμή στο foreground (η οποία προφανώς θα είναι child process του κεντρικού Shell) και να εμφανίζεται ένα μήνυμα. Δοκίμασα μόλις να κάνω kill(0, SIGKILL) αλλά όταν πατάω CTRL^C τερματίζει και το shell μου γιατί το βλέπει σαν διεργασία του terminal.. Πρέπει μήπως να κάνω κάποιο ιδιαίτερο initialize ή κάτι;;; :/ Δε θα έπρεπε να κάνει η μητρική διεργασία kill(child_pid,SIGKILL); Αυτό βασικά το κατάφερα... Βλακεία έκανα..Αλλά ευχαριστώ! Να κάνω μία άλλη ερώτηση όμως...Θα πρέπει να χρησιμοποιήσω καθόλου συναρτήσεις όπως setpgid() ή tcsetpgrp() και κάτι άλλες που είναι για παρόμοιους σκοπούς,;; Προς το παρόν το χω κάνει χωρίς αυτά και δουκλεύει καλά νομίζω, τουλάχιστον γι'αυτό που ζητάει η εργασία.... Εμένα, πχ, δεν μου χρειάστηκαν αυτές οι συναρτήσεις για να κάνω τη δουλειά μου. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: olgatsim on January 17, 2015, 19:58:15 pm Το σήμα SIGCHLD το βάζουμε σε λειτουργία default ( signal(SIGCHLD, SIG_DFL) ) ή έστω SIG_IGN ή πρέπει να φτιάξουμε handler?? Και επίσης, ο handler του SIGINT για το Ctrl^C απλά θα τυπώνει ένα μήνυμα τερματισμού και θα κάνει kill τις ενεργές διεργασίες; Το πως θα το υλοποιήσεις εξαρτάται από το πως έχεις σκεφτεί/υλοποιήσει εσύ το πρόβλημα. Το σίγουρο είναι πως όταν πατάς Ctrl+C θα πρέπει να τερματίζει όποια διεργασία (αν υπάρχει κάποια) τρέχει εκείνη τη στιγμή στο foreground (η οποία προφανώς θα είναι child process του κεντρικού Shell) και να εμφανίζεται ένα μήνυμα. Δοκίμασα μόλις να κάνω kill(0, SIGKILL) αλλά όταν πατάω CTRL^C τερματίζει και το shell μου γιατί το βλέπει σαν διεργασία του terminal.. Πρέπει μήπως να κάνω κάποιο ιδιαίτερο initialize ή κάτι;;; :/ Δε θα έπρεπε να κάνει η μητρική διεργασία kill(child_pid,SIGKILL); Αυτό βασικά το κατάφερα... Βλακεία έκανα..Αλλά ευχαριστώ! Να κάνω μία άλλη ερώτηση όμως...Θα πρέπει να χρησιμοποιήσω καθόλου συναρτήσεις όπως setpgid() ή tcsetpgrp() και κάτι άλλες που είναι για παρόμοιους σκοπούς,;; Προς το παρόν το χω κάνει χωρίς αυτά και δουκλεύει καλά νομίζω, τουλάχιστον γι'αυτό που ζητάει η εργασία.... Εμένα, πχ, δεν μου χρειάστηκαν αυτές οι συναρτήσεις για να κάνω τη δουλειά μου. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: jthois on January 17, 2015, 20:33:24 pm Σχετικά με το doxygen, μπορεί κάποιος να εξηγήσει τη διαδικασία παραγωγής του εγγραφου τεκμηρίωσης; Aν χρειάζονται comments, πως χρησιμοποιούμε το doxyfile κτλ.
ΥΓ Έκανα εγκατάσταση του doxygen και σε terminal και σε .app, διάβασα και τα tutorial αλλά δεν έχω καταλάβει τι κάνουμε. :-\ Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Σα τανυστής on January 17, 2015, 20:48:45 pm Σχετικά με το doxygen, μπορεί κάποιος να εξηγήσει τη διαδικασία παραγωγής του εγγραφου τεκμηρίωσης; Aν χρειάζονται comments, πως χρησιμοποιούμε το doxyfile κτλ. ΥΓ Έκανα εγκατάσταση του doxygen και σε terminal και σε .app, διάβασα και τα tutorial αλλά δεν έχω καταλάβει τι κάνουμε. :-\ εγω ειδα αυτο (http://fnch.users.sourceforge.net/doxygen_c.html) και με βοηθησε Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: jthois on January 18, 2015, 14:00:06 pm εγω ειδα αυτο (http://fnch.users.sourceforge.net/doxygen_c.html) και με βοηθησε Χίλια ευχαριστώ! Τελικά είχε πρόβλημα και το doxygen στον υπολογιστή μου!Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: c0ndemn3d on January 18, 2015, 18:45:19 pm Όταν βάζω μια διεργασία στο background πχ ls -l & και αυτή τυπώνει αυτά που πρέπει μετά όταν πατάω ps μου βγάζει δίπλα από την διεργασία ένα <defunct>. Είχε κανείς παρόμοιο πρόβλημα? Επίσης για κάποιο λόγο εκτελούνται συναρτήσεις 2 φορές (μία για κάθε process), ενώ έχω βάλει τη fork πιο κάτω από την τάδε συνάρτηση και είμαι σίγουρος ότι δεν γίνεται από την επόμενη επανάληψη. Περίεργα πράγματα. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: L on January 18, 2015, 19:24:28 pm Όταν βάζω μια διεργασία στο background πχ ls -l & και αυτή τυπώνει αυτά που πρέπει μετά όταν πατάω ps μου βγάζει δίπλα από την διεργασία ένα <defunct>. Είχε κανείς παρόμοιο πρόβλημα? Δοκίμασε να κάνεις waitpid με το PID του sender όταν πάρεις SIGCHLD στη μάνα. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: c0ndemn3d on January 18, 2015, 19:48:24 pm Όταν βάζω μια διεργασία στο background πχ ls -l & και αυτή τυπώνει αυτά που πρέπει μετά όταν πατάω ps μου βγάζει δίπλα από την διεργασία ένα <defunct>. Είχε κανείς παρόμοιο πρόβλημα? Δοκίμασε να κάνεις waitpid με το PID του sender όταν πάρεις SIGCHLD στη μάνα. Μπορείς να κάνεις Code: signal(SIGCHLD, SIG_IGN); http://askubuntu.com/questions/201303/what-is-defunct-for-a-process-and-why-it-doesnt-get-killed http://stackoverflow.com/questions/6718272/c-exec-fork-defunct-processes Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: L on January 18, 2015, 19:58:10 pm Όταν βάζω μια διεργασία στο background πχ ls -l & και αυτή τυπώνει αυτά που πρέπει μετά όταν πατάω ps μου βγάζει δίπλα από την διεργασία ένα <defunct>. Είχε κανείς παρόμοιο πρόβλημα? Δοκίμασε να κάνεις waitpid με το PID του sender όταν πάρεις SIGCHLD στη μάνα. Μπορείς να κάνεις Code: signal(SIGCHLD, SIG_IGN); http://askubuntu.com/questions/201303/what-is-defunct-for-a-process-and-why-it-doesnt-get-killed http://stackoverflow.com/questions/6718272/c-exec-fork-defunct-processes Υποθέτω είναι ανάλογα πώς έχεις δομήσει τον κώδικα (σε μένα π.χ. χρειάζεται να κάνω handle το SIGCHLD). Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: vlad on January 18, 2015, 20:01:35 pm Τελικα με ctrl+c τι κανουμε;Δεν μπορω να καταλαβω τι να κανω termination.Το προγραμμα ή processes.
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 18, 2015, 20:02:38 pm Τελικα με ctrl+c τι κανουμε;Δεν μπορω να καταλαβω τι να κανω termination.Το προγραμμα ή processes. Αν υπάρχει, το process που τρέχει εκείνη τη στιγμή στο foreground. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 18, 2015, 20:03:28 pm Επίσης, η συγκεκριμένη εργασία είναι σχεδόν-ακριβώς αυτή (https://github.com/brenns10/lsh/tree/9f2b98a74992f2837903f0ed91f4c6cb69784ab4). Μέχρι και doxygen comments έχει :P
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 18, 2015, 20:11:35 pm Και αν θέλετε να νιώσετε καλύτερα για το επίπεδο αγγλικών σας, μπορείτε να διαβάσετε αυτό (http://alexander.ee.auth.gr:8083/eTHMMY/archive/94/downloadFile/5892/ProjectOS_2014_2015en.pdf).
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: vlad on January 18, 2015, 20:41:36 pm Τελικα με ctrl+c τι κανουμε;Δεν μπορω να καταλαβω τι να κανω termination.Το προγραμμα ή processes. Αν υπάρχει, το process που τρέχει εκείνη τη στιγμή στο foreground.Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: olgatsim on January 18, 2015, 21:03:17 pm Αν δηλαδή βάλουμε στον κώδικά μας σχόλια σ'αυτό το στύλ και το κάνουμε pdf θα 'ναι τεκμηρίωση του κώδικα;;; Δεν μπορώ να βγάλω καμία άκρη με το doxygen -_- :'(
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 18, 2015, 21:04:13 pm Αν δηλαδή βάλουμε στον κώδικά μας σχόλια σ'αυτό το στύλ και το κάνουμε pdf θα 'ναι τεκμηρίωση του κώδικα;;; Δεν μπορώ να βγάλω καμία άκρη με το doxygen -_- :'( Σχόλια τέτοιου στυλ μεταφράζονται αυτόματα στο doxygen documentation, ναι. Κάτι τέτοιο θέλει δηλαδή. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: olgatsim on January 18, 2015, 21:08:06 pm Αν δηλαδή βάλουμε στον κώδικά μας σχόλια σ'αυτό το στύλ και το κάνουμε pdf θα 'ναι τεκμηρίωση του κώδικα;;; Δεν μπορώ να βγάλω καμία άκρη με το doxygen -_- :'( Σχόλια τέτοιου στυλ μεταφράζονται αυτόματα στο doxygen documentation, ναι. Κάτι τέτοιο θέλει δηλαδή. Δεν έχω καταφέρει να κάνω την εγκατάσταση ούτε στα Windows ούτε στα Ubuntu (VMware)... Φτάνει σίγουρα να το κάνω σε μορφή pdf..; Δεν έχω καταλάβει τι μορφή και τι αρχεί μας δίνει το doxygen...:/ Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 18, 2015, 21:28:19 pm Αν δηλαδή βάλουμε στον κώδικά μας σχόλια σ'αυτό το στύλ και το κάνουμε pdf θα 'ναι τεκμηρίωση του κώδικα;;; Δεν μπορώ να βγάλω καμία άκρη με το doxygen -_- :'( Σχόλια τέτοιου στυλ μεταφράζονται αυτόματα στο doxygen documentation, ναι. Κάτι τέτοιο θέλει δηλαδή. Δεν έχω καταφέρει να κάνω την εγκατάσταση ούτε στα Windows ούτε στα Ubuntu (VMware)... Φτάνει σίγουρα να το κάνω σε μορφή pdf..; Δεν έχω καταλάβει τι μορφή και τι αρχεί μας δίνει το doxygen...:/ Γενικώς το output του doxygen είναι μια ιστοσελίδα που περιέχει το documentation. Στα Windows είναι λίγο piece-of-pie το installation. Απλά ακολουθείς τα βήματα. Τι πρόβλημα είχες; Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: olgatsim on January 18, 2015, 21:32:38 pm Αν δηλαδή βάλουμε στον κώδικά μας σχόλια σ'αυτό το στύλ και το κάνουμε pdf θα 'ναι τεκμηρίωση του κώδικα;;; Δεν μπορώ να βγάλω καμία άκρη με το doxygen -_- :'( Σχόλια τέτοιου στυλ μεταφράζονται αυτόματα στο doxygen documentation, ναι. Κάτι τέτοιο θέλει δηλαδή. Δεν έχω καταφέρει να κάνω την εγκατάσταση ούτε στα Windows ούτε στα Ubuntu (VMware)... Φτάνει σίγουρα να το κάνω σε μορφή pdf..; Δεν έχω καταλάβει τι μορφή και τι αρχεί μας δίνει το doxygen...:/ Γενικώς το output του doxygen είναι μια ιστοσελίδα που περιέχει το documentation. Στα Windows είναι λίγο piece-of-pie το installation. Απλά ακολουθείς τα βήματα. Τι πρόβλημα είχες; Γενικά δεν πολυνιώθω το command prompt στα windows.. και το manual από το site του doxygen στο κομμάτι για τα windows μου φαίνεται πρόχειρο.. :/ θα ξαναδοκιμάσω.. αλλά αν έχεις τρόπο να μου το εξηγήσεις απλά θα ήταν τέλεια :D O:) Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 18, 2015, 21:35:29 pm Αν δηλαδή βάλουμε στον κώδικά μας σχόλια σ'αυτό το στύλ και το κάνουμε pdf θα 'ναι τεκμηρίωση του κώδικα;;; Δεν μπορώ να βγάλω καμία άκρη με το doxygen -_- :'( Σχόλια τέτοιου στυλ μεταφράζονται αυτόματα στο doxygen documentation, ναι. Κάτι τέτοιο θέλει δηλαδή. Δεν έχω καταφέρει να κάνω την εγκατάσταση ούτε στα Windows ούτε στα Ubuntu (VMware)... Φτάνει σίγουρα να το κάνω σε μορφή pdf..; Δεν έχω καταλάβει τι μορφή και τι αρχεί μας δίνει το doxygen...:/ Γενικώς το output του doxygen είναι μια ιστοσελίδα που περιέχει το documentation. Στα Windows είναι λίγο piece-of-pie το installation. Απλά ακολουθείς τα βήματα. Τι πρόβλημα είχες; Γενικά δεν πολυνιώθω το command prompt στα windows.. και το manual από το site του doxygen στο κομμάτι για τα windows μου φαίνεται πρόχειρο.. :/ θα ξαναδοκιμάσω.. αλλά αν έχεις τρόπο να μου το εξηγήσεις απλά θα ήταν τέλεια :D O:) Δοκίμασε το doxywizard που είναι ουσιαστικά ένα GUI για να σου κάνει τη ζωή εύκολη. Μπορείς να το κατεβάσεις από εδώ (http://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.9.1-setup.exe). Η χρήση του είναι γελοία, δε χρειάζεται καν guide/manual. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: olgatsim on January 18, 2015, 21:37:44 pm Αν δηλαδή βάλουμε στον κώδικά μας σχόλια σ'αυτό το στύλ και το κάνουμε pdf θα 'ναι τεκμηρίωση του κώδικα;;; Δεν μπορώ να βγάλω καμία άκρη με το doxygen -_- :'( Σχόλια τέτοιου στυλ μεταφράζονται αυτόματα στο doxygen documentation, ναι. Κάτι τέτοιο θέλει δηλαδή. Δεν έχω καταφέρει να κάνω την εγκατάσταση ούτε στα Windows ούτε στα Ubuntu (VMware)... Φτάνει σίγουρα να το κάνω σε μορφή pdf..; Δεν έχω καταλάβει τι μορφή και τι αρχεί μας δίνει το doxygen...:/ Γενικώς το output του doxygen είναι μια ιστοσελίδα που περιέχει το documentation. Στα Windows είναι λίγο piece-of-pie το installation. Απλά ακολουθείς τα βήματα. Τι πρόβλημα είχες; Γενικά δεν πολυνιώθω το command prompt στα windows.. και το manual από το site του doxygen στο κομμάτι για τα windows μου φαίνεται πρόχειρο.. :/ θα ξαναδοκιμάσω.. αλλά αν έχεις τρόπο να μου το εξηγήσεις απλά θα ήταν τέλεια :D O:) Δοκίμασε το doxywizard που είναι ουσιαστικά ένα GUI για να σου κάνει τη ζωή εύκολη. Μπορείς να το κατεβάσεις από εδώ (http://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.9.1-setup.exe). Η χρήση του είναι γελοία, δε χρειάζεται καν guide/manual. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: boone on January 18, 2015, 21:43:36 pm Τελικα με ctrl+c τι κανουμε;Δεν μπορω να καταλαβω τι να κανω termination.Το προγραμμα ή processes. Αν υπάρχει, το process που τρέχει εκείνη τη στιγμή στο foreground. Really? Εγώ το έγραψα να τερματίζει το shell. Πειράζει λες αν το αφήσω ως έχει; Ποιος κάνει ξανά μανά έγγραφα κ αλλαγές και παπαριές. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 18, 2015, 21:45:13 pm Τελικα με ctrl+c τι κανουμε;Δεν μπορω να καταλαβω τι να κανω termination.Το προγραμμα ή processes. Αν υπάρχει, το process που τρέχει εκείνη τη στιγμή στο foreground. Really? Εγώ το έγραψα να τερματίζει το shell. Πειράζει λες αν το αφήσω ως έχει; Ποιος κάνει ξανά μανά έγγραφα κ αλλαγές και παπαριές. Κοίτα, το να κλείνει όλο το shell άμα πατήσεις Ctrl+C είναι ουσιαστικά αυτό που γινόταν άμα δεν κάνεις καν handle το σήμα, οπότε δεν έκανες κάτι χρήσιμο. Άλλωστε, το θέμα είναι να φτιάξεις κάτι που μοιάζει με ένα κανονικό shell, στο οποίο με το να πατήσει Ctrl+C δεν κλείνει όλο το shell. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: boone on January 18, 2015, 22:15:05 pm Τελικα με ctrl+c τι κανουμε;Δεν μπορω να καταλαβω τι να κανω termination.Το προγραμμα ή processes. Αν υπάρχει, το process που τρέχει εκείνη τη στιγμή στο foreground. Really? Εγώ το έγραψα να τερματίζει το shell. Πειράζει λες αν το αφήσω ως έχει; Ποιος κάνει ξανά μανά έγγραφα κ αλλαγές και παπαριές. Κοίτα, το να κλείνει όλο το shell άμα πατήσεις Ctrl+C είναι ουσιαστικά αυτό που γινόταν άμα δεν κάνεις καν handle το σήμα, οπότε δεν έκανες κάτι χρήσιμο. Άλλωστε, το θέμα είναι να φτιάξεις κάτι που μοιάζει με ένα κανονικό shell, στο οποίο με το να πατήσει Ctrl+C δεν κλείνει όλο το shell. Πφφ, γιατί να έχεις πάντα δίκιο; :P I need to fix this >:( edit: Οκ, κάνω SIGTERM αλλά μου τερματίζει όλες τις διεργασίες και σε background και σε foreground.. Γιατί; Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: themis93 on January 21, 2015, 00:10:35 am Μια απορία:
όταν θέλω να εκτελεστεί μια εντολή στο background πληκτρολογώ στο τέλος τον χαρακτήρα &. οταν περνάω τα ορίσματα στην evecvp μου στέλνει μήνυμα λάθους ότι δεν αναγνωρίζει αυτον τον χαρακτήρα. αυτό είναι λογικό να συμβαίνει ή εγώ έχω κανει κάπου λάθος? Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Exomag on January 21, 2015, 00:16:13 am Μια απορία: όταν θέλω να εκτελεστεί μια εντολή στο background πληκτρολογώ στο τέλος τον χαρακτήρα &. οταν περνάω τα ορίσματα στην evecvp μου στέλνει μήνυμα λάθους ότι δεν αναγνωρίζει αυτον τον χαρακτήρα. αυτό είναι λογικό να συμβαίνει ή εγώ έχω κανει κάπου λάθος? Το '&' το βάζεις και αυτό στην execvp(); Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: vlad on January 21, 2015, 00:16:46 am Μια απορία: Κοιτα,δεν ξερω να θα επρεπε να δουλευει αλλα θαρρω πως ναι.Ωστοσο το ζητουμενο δεν ειναι να εκτελεστει ετσι η διαδικασια στο background,αλλα με το να μην περιμενει η μητρικη διαδικασια το τελος της θυγατρικης.Με λιγα λογια,δεν θελει να περνας τον χαρακτηρα & στο ορισμα της execvp.όταν θέλω να εκτελεστεί μια εντολή στο background πληκτρολογώ στο τέλος τον χαρακτήρα &. οταν περνάω τα ορίσματα στην evecvp μου στέλνει μήνυμα λάθους ότι δεν αναγνωρίζει αυτον τον χαρακτήρα. αυτό είναι λογικό να συμβαίνει ή εγώ έχω κανει κάπου λάθος? Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: themis93 on January 21, 2015, 02:27:33 am Μια απορία: Κοιτα,δεν ξερω να θα επρεπε να δουλευει αλλα θαρρω πως ναι.Ωστοσο το ζητουμενο δεν ειναι να εκτελεστει ετσι η διαδικασια στο background,αλλα με το να μην περιμενει η μητρικη διαδικασια το τελος της θυγατρικης.Με λιγα λογια,δεν θελει να περνας τον χαρακτηρα & στο ορισμα της execvp.όταν θέλω να εκτελεστεί μια εντολή στο background πληκτρολογώ στο τέλος τον χαρακτήρα &. οταν περνάω τα ορίσματα στην evecvp μου στέλνει μήνυμα λάθους ότι δεν αναγνωρίζει αυτον τον χαρακτήρα. αυτό είναι λογικό να συμβαίνει ή εγώ έχω κανει κάπου λάθος? Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: sof_s on January 22, 2015, 13:51:36 pm Δοκίμασε το doxywizard που είναι ουσιαστικά ένα GUI για να σου κάνει τη ζωή εύκολη. Μπορείς να το κατεβάσεις από εδώ (http://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.9.1-setup.exe). Η χρήση του είναι γελοία, δε χρειάζεται καν guide/manual. Κατέβασα το doxywizard στα windows και ακολούθησα τα βήματα για να το τρέξω αλλά δεν βγάζει αποτελέσματα. Τι ρυθμίσεις να βάλω, γιατί δοκίμασα διάφορα και δεν βγάζει κανένα αποτέλεσμα. Μήπως πρέπει να εγκαταστήσω το Latex και το GraphViz? edit: Άκυρο, έβαζα λάθος working directory... :P Θέλουμε απλά αυτό το html όμως? Δεν μου βγάζει πουθενά σχόλια κτλ που έλεγαν κάποιοι Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: c0ndemn3d on January 22, 2015, 14:49:49 pm Έχεις βάλει κεφαλίδα στο αρχείο; Είναι αυτό εδώ πχ:
/*! \file shell.c * \brief Implements a basic shell * */ Χωρίς κεφαλίδες δεν είναι ορατά τα αρχεία στο doxygen γενικά. Το doxygen γενικά είναι απλό και από γραμμή εντολών και με λίγο ψάξιμο δεν θέλει πολλά πράγματα. doxygen -g (Αυτό για παραγωγή του αρχείου ρυθμίσεων) Μετά κάνετε επεξεργασία και αλλάζετε την εγγραφή PROJECT_NAME (αλλά και να μην την αλλάξετε σιγά το πράγμα) Όπως επίσης και τις εγγραφές OPTIMIZE_OUTPUT_FOR_C και TAB_SIZE... Ε μετά καλείτε doxygen έτσι απλά και παράγονται τα ζητούμενα αρχεία. Για την παραγωγή όμως το doxygen κάνει μόνο τα αρχεία που έχουν κεφαλίδα όπως περιγράφεται από πάνω.. Πηγή: www.google.gr Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: Dealan on January 22, 2015, 14:49:58 pm Κατέβασα το doxywizard στα windows και ακολούθησα τα βήματα για να το τρέξω αλλά δεν βγάζει αποτελέσματα. Τι ρυθμίσεις να βάλω, γιατί δοκίμασα διάφορα και δεν βγάζει κανένα αποτέλεσμα. Μήπως πρέπει να εγκαταστήσω το Latex και το GraphViz? edit: Άκυρο, έβαζα λάθος working directory... :P Θέλουμε απλά αυτό το html όμως? Δεν μου βγάζει πουθενά σχόλια κτλ που έλεγαν κάποιοι Ο html φάκελος αρκεί. Τα σχόλια αν δεν έχεις ξεχάσει να ακολουθήσεις τις προδιαγραφές θα πρέπει να εμφανίζονται στα αντίστοιχα αρχεία. Edit: Με πρόλαβε και ο c0ndemn3d. Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: olgatsim on January 22, 2015, 15:46:53 pm Επίσης πρέπει στην καρτέλα mode να επιλέξεις το All entities... αλλιώς δεν θα βγάζει τίποτα... Εγώ αυτό δεν έκανα και μου έσπασαν να νεύρα μέχρι να το πάρω χαμπάρι... -_-
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: sof_s on January 22, 2015, 18:13:57 pm Επίσης πρέπει στην καρτέλα mode να επιλέξεις το All entities... αλλιώς δεν θα βγάζει τίποτα... Εγώ αυτό δεν έκανα και μου έσπασαν να νεύρα μέχρι να το πάρω χαμπάρι... -_- Εμένα μου τα βγάζει κανονικά αλλά δεν είχα δει ότι τα σχόλια θέλουν συγκεκριμένο τρόπο για να φαίνονται. Thanks guys! Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: megali mpougatsa on January 26, 2015, 18:34:04 pm Ξέρουμε για deadline? :???:
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: TrueForce on January 26, 2015, 18:41:12 pm ^31/1
Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: sexycowboy on January 30, 2015, 20:49:27 pm Μπορεί να βοηθήσει κάποιος με την υλοποίηση του handler του SIGINT, γιατί έχω φάει κόλλημα; Θα έχω στη main
signal(SIGINT, handler) και μετά μέσα στο handler τι; θα πρέπει κάπως να κάνω kill τη διεργασία που υπάρχει στο foreground? Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: rspappas on January 31, 2015, 18:32:54 pm μεσα στο handler:
printf("antegeiamoromou"); exit(9001); Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: boone on January 31, 2015, 18:41:23 pm Μπορεί να βοηθήσει κάποιος με την υλοποίηση του handler του SIGINT, γιατί έχω φάει κόλλημα; Θα έχω στη main signal(SIGINT, handler) και μετά μέσα στο handler τι; θα πρέπει κάπως να κάνω kill τη διεργασία που υπάρχει στο foreground? Σ εμένα δε λειτούργησε οπως θα ηθελα γτ σκοτωνε ολες τις διεργασιες και στο background. Κάτι του στυλ void handler (int a) { if (a==SIGINT) { μπλα μπλα } Μεσα στο μπλα μπλα, αντικατεστησα το SIGINT με το SIGKILL για να μην τερματιζει το προγραμμα και ξανακαλουσα τη handler. Λαθος, σωστό, c' est la vie! Title: Re: [Λειτουργικά Συστήματα] Εργασία 2014-2015 Post by: sexycowboy on January 31, 2015, 18:53:49 pm Εν τέλει και εγώ κάτι τέτοιο υλοποίησα.Σκοτώνει τη διεργασία που είναι στο foreground αλλά μου αφήνει <defunct> τις διεργασίες που είναι στο background, το οποίο μάλλον δεν είναι καλό :D
|