Θα πρέπει να γράψετε ένα πρόγραμμα C το οποίο θα δημιουργεί μία λίστα από διεργασίες που θα επικοινωνούν μεταξύ τους με pipes. Αρχικά το πρόγραμμα θα αποτελείται από 1 διεργασία από την οποία θα δημιουργηθούν αλυσιδωτά τόσες θυγατρικές διεργασίες (child processes) όσες είναι οι λέξεις που θα δώσει ο χρήστης σαν παράμετρο στην είσοδο. Οι θυγατρικές διεργασίες θα δημιουργηθούν με την βοήθεια του system call fork. Κάθε μια από τις θυγατρικές διεργασίες θα εκτελεί την fork μέχρι να δημιουργηθούν τόσες όσες ζητήθηκαν αρχικά από τον χρήστη. π.χ η 1η δημιουργεί την 2η διεργασία, η 2η δημιουργεί την 3η κτλ. Κάθε pipe που ανοίγει μεταξύ 2 διεργασιών έχει 2 end-points για κάθε μια από τις διεργασίες που εμπλέκονται στην επικοινωνία, ένα read-end από το οποίο διαβάζει και ένα write-end στο οποίο μπορεί και γράφει. Κάθε διεργασία επικοινωνεί με την θυγατρική που δημιούργησε, στέλνοντας δεδομένα στην read-end της θυγατρικής διεργασίας.
Ο χρήστης θα δίνει από τη γραμμή εντολής ένα σύνολο λέξεων διαχωρισμένες με κενά (π.χ. μια πρόταση) και το πρόγραμμα θα τυπώνει τις λέξεις αυτές με την αντίστροφη σειρά. Κάθε διεργασία θα τυπώνει από μία λέξη στην έξοδο και κατάλληλα επεξηγηματικά μηνύματα που θα αποδεικνύουν την ταυτότητά της.
Για να υλοποιήσετε το πρόγραμμα θα χρειαστείτε και τα παρακάτω #includes:
- Κώδικας: Επιλογή όλων
#include <sys/types.h> pipe()
#include <unistd.h > fork()
#include <sys/wait.h> read()
#include <signal.h> write()
#include <stdio.h> getpid()
#include <ctype.h> waitpid()
#include <string.h>
ευχαριστω εκ των προτερων..
οποιος μπορει ας βοηθησει ρε παιδια!!!
