poths Δημοσ. 11 Ιουνίου 2008 Δημοσ. 11 Ιουνίου 2008 το προβλημα μου ειναι το εξης: οταν χρησιμοποιεις την εντολη fork σε προγραμματισμο λειτουργικων συστηματων...λεει η θεωρια οτι ....επιστρεφει στον πατερα(parent proccess) το process id του (παιδιου) child id...τι ενοει με αυτο ο ποιητης. Ευχαριστω εκ των προτερων
narbi Δημοσ. 12 Ιουνίου 2008 Δημοσ. 12 Ιουνίου 2008 το προβλημα μου ειναι το εξης: οταν χρησιμοποιεις την εντολη fork σε προγραμματισμο λειτουργικων συστηματων...λεει η θεωρια οτι ....επιστρεφει στον πατερα(parent proccess) το process id του (παιδιου) child id...τι ενοει με αυτο ο ποιητης.Ευχαριστω εκ των προτερων > #include <stdio.h> #include <stdlib.h> #include <unistd.h> main () { pid_t pid; pid=fork(); if (pid>0) { //εκτέλεση πατέρα } if (pid==0) { //εκτέλεση παιδιού } else { printf("Error\n"); exit(1); } return 0; } Νομίζω πως αυτό ισχύει για αυτό που ζητάς. Για να καλυψεις θεωρητικά τα κενά σου μπορείς και να το ψάξεις λίγο παραπάνω μόνος σου νομίζω...
myle Δημοσ. 12 Ιουνίου 2008 Δημοσ. 12 Ιουνίου 2008 Κάθε process έχει ένα id που το χαρακτηρίζει, όπως εσύ το όνομα σου. Ε, όταν καει fork() σε *nix συστήματα, το fork προφανώς θα γίνει μέσα σε ένα process και όταν τελειώσει η κλήση συστήματος, τότε θα επιστραφεί μια τιμή. Η τιμή αυτή είναι το process id του process που δημιουργήθηκε. Σημείωση σχεδόν προφανής: Το system call fork() δημιουργεί ένα καινούργιο process (και μάλιστα είναι ο μοναδικός τρόπος να γίνει αυτό). EDIT: Ο κώδικας παραπάνω είναι λάθος καθώς δεν ξέρεις ότι το pid του καινούργιου process είναι 1. Έλεγχος διάφορος του μηδενός χρειαζόταν εκεί. Αν δεν κάνω λάθος σε linux pid == 1 ισχύει για το init.
narbi Δημοσ. 12 Ιουνίου 2008 Δημοσ. 12 Ιουνίου 2008 Αν ελεγχεις μονο για διάφορο του 0 δεν ξέρεις πότε απέτυχε η fork και πότε εκτελέιται ο πατέρας.. Μια άλλη εκδοχή ίσως είναι: >#include <stdio.h> #include <stdlib.h> #include <unistd.h> main () { pid_t pid; pid=fork(); if (pid==-1) { printf("Error\n"); exit(1); } if (pid==0) { //εκτέλεση παιδιού } else { //εκτέλεση πατέρα } return 0; } η οποία είναι σίγουρα σωστή γιατί την έχω παραδώσει και σε εργασία (εμπλουτισμένη).
poths Δημοσ. 12 Ιουνίου 2008 Μέλος Δημοσ. 12 Ιουνίου 2008 ευχαρισρω πολυ ολους για την κατατοπηση κ τη συμετοχη
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.