lion2486 Δημοσ. 31 Μαΐου 2012 Δημοσ. 31 Μαΐου 2012 (επεξεργασμένο) Καλησπέρα, προσπαθώ να φτιάξω μια εφαρμογή η οποία να δημιουργεί νέες διεργασίες (με fork()) και μετά με execl τρέχω ένα άλλο πρόγραμμα το οποίο θέλω να επικοινωνεί συνεχώς με την διεργασία - πατέρα και να ανταλλάζουν δεδομένα. Υπάρχουν πολλές διεργασίες παιδιά και πρέπει η αρχική διεργασία να κρατάει στοιχεία από όλες και να τις τερματίσει όταν χρειαστεί. Η ιδέα είναι να δημιουργήσω 2 pipes για την επικοινωνία κάθε διεργασίας με τη διεργασία-πατέρα, και ίσως με κάποια σήματα να πληρωφορώ την ανάλογη διεργασία να λάβει τα δεδομένα (δεν έχω βρει τρόπο για να το κάνω αυτό). Αρχικό πρόβλημά μου σε όλο αυτό είναι η λειτουργία των pipes, δίνω τους fileDescriptors στο εκτελούμενο πρόγραμμα σαν παράμετρο, έχω κάνει write() από την πατρική διεργασία, αλλά μετά το read() δεν καταφέρνω να περάσω τα δεδομένα. Υπάρχει κάποιος πιο εξοικιωμένος με αυτά να δώσει λίγο φως; Ευχαριστώ πολύ. Επεξ/σία 31 Μαΐου 2012 από lion2486
lion2486 Δημοσ. 4 Ιουνίου 2012 Μέλος Δημοσ. 4 Ιουνίου 2012 Τελικά αυτό το πρόβλημα το έλυσα, από απροσεξία είχα κάνει close() το ρεύμα εγγραφής και δεν γινόταν σωστά η εγγραφή. Ένα άλλο ερώτημά μου κατά την υλοποίηση είναι αν γίνεται να γνωρίζει η πατρική διεργασία όταν λαμβάνει ένα σήμα από που προέρχεται...
isim Δημοσ. 7 Ιουνίου 2012 Δημοσ. 7 Ιουνίου 2012 Προφανως θα εχει ενα read/write stream και το child thread θα στελνει μυνηματα στο parent thread. Τι ακριβως θελεις να κανεις;
lion2486 Δημοσ. 7 Ιουνίου 2012 Μέλος Δημοσ. 7 Ιουνίου 2012 φτιάχνω 2 προγράμματα, όπου το πρώτο θα διαχειρίζεται τα πολλά instances του δεύτερου, ώστε να ολοκληρωθεί μια δουλεια (clawer website). Είχα πρόβλημα με την επικοινωνία μεταξύ τους αλλά τελικά χρησιμοποιώ την poll() για να πέρνω τα δεδομένα όταν υπάρχουν.
pinball_elf Δημοσ. 7 Ιουνίου 2012 Δημοσ. 7 Ιουνίου 2012 Δες τα παρακάτω:http://www.insomnia.gr/topic/354994 http://www.insomnia.gr/topic/264508
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα