Jump to content



Βοήθεια στην C


Thodoris21

Recommended Posts

Ναι σε linux αλλα δεν πρεπει να το κανω με νηματα (threads),πρεπει να το κανω με διεργασιες δηλ να δημιουργω παιδια με την fork().

#include <unistd.h>

void main ()
{
pid_t pID = fork(); <-- δημιουργια παιδιών για να κάνει 3 θέλεις ένα for και ένα πίνακα που θα κρατάει τα pid_t
if (pID == 0) // child
{
// Code only executed by child process

κώδικας που θα εκτελεί το παιδί.
}
else if (pID < 0) // failed to fork
{
cerr << "Failed to fork" << endl;
exit(1);
}
else // parent
{
// Code only executed by parent process

}
}

Το πως θα χωρίσεις το αρχείο εισόδου ανάμεσα στα 3 παιδιά δεν έχω ιδέα

Οταν ομως γινεται το fork ο κωδικας από ποιον θα εκτελείται?Από το παιδί ή απο τον πατέρα?Για παράδειγμα αν θέλω 3 διεργασίες να εκτελούνται παράλληλα πρέπει να κάνω ένα fork,να εκτελέσει το παιδί έναν κώδικα(1η διεργασία),ο πατέρας άλλον έναν κώδικα(2η διεργασία) και για την 3η διεργασία χρειάζομαι ακόμα ένα fork όπου εκτελείται μόνο ο πατέρας ή μονο το παιδί?Σωστά?

Όταν κάνεις fork o πατέρας αναστέλει την λειτουργια του αν θυμάμαι καλα (ίσως να κάνω και λάθος) μέχρι να τελειώσουν τα παιδιά του.

Ο πατέρας δεν μετράει.Θες 3 παιδιά-διεργασίες θες 3 fork.

Αυτο γινεται με την εντολη wait.Αρα κανω 3 fork και εκτελω τον κωδικα μονο οταν pid=0.Σωστος?

Τωρα πως καθε fork θα μετατρεπει συγκεκριμενες γραμμες?Εδω ειναι το δυσκολο...

Archived

This topic is now archived and is closed to further replies.

×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.