mariakal Δημοσ. 5 Φεβρουαρίου 2010 Δημοσ. 5 Φεβρουαρίου 2010 Προσπαθώ να κάνω ένα πρόγραμμα σε C, το οποίο θα κάνει χρήση των πιο κάτω κλήσεων συστήματος του Linux: • Μια διεργασία Πατέρας θα παράγει 10 τυχαίους ακεραίους (rand). • Στη συνέχεια θα παράγει (fork) 2 διεργασίες. • Οι διεργασίες Παιδιά θα τυπώνουν το PID τους και θα κάνουν ταξινόμηση (qsort, βλ. <stdlib.h>) τους ακεραίους κατά αύξουσα σειρά η μία, και κατά φθίνουσα σειρά η άλλη. • Οι ταξινομημένοι πίνακες θα τυπώνονται στο stdout με χρήση της write (η sprintf επιτρέπεται να χρησιμοποιηθεί, η printf/fprintf δεν επιτρέπεται). • Η διεργασία Πατέρας θα βρίσκεται σε αναμονή (wait) μέχρι να ολοκληρώσουν οι διεργασίες Παιδιά την εκτέλεση τους. Το παλεύω αρκετά, αλλά δεν βλέπω....φως!! Μήπως μπορεί κάποιος να με βοηθήσει?
pinball_elf Δημοσ. 5 Φεβρουαρίου 2010 Δημοσ. 5 Φεβρουαρίου 2010 Πόσο το έχεις προχωρήσει? Σε ποιό σημείο έχεις κολήσει?
mariakal Δημοσ. 5 Φεβρουαρίου 2010 Μέλος Δημοσ. 5 Φεβρουαρίου 2010 Νομίζω πως μόνο το τελευταιο ερώτημα μπορώ να κάνω: ... int childExitStatus; pid_t ws = waitpid( pID, &childExitStatus, 0); if( !WIFEXITED(childExitStatus) ) { cerr << "waitpid() exited with an error: Status= " << WEXITSTATUS(childExitStatus) << endl; } else if( WIFSIGNALED(childExitStatus) ) { cerr << "waitpid() exited due to a signal: " << WTERMSIG(childExitStatus) << endl; }
pinball_elf Δημοσ. 6 Φεβρουαρίου 2010 Δημοσ. 6 Φεβρουαρίου 2010 Το παρακάτω προγραμματάκι σε βοηθάει να λύσεις τα εξής ερωτήματα: • Στη συνέχεια θα παράγει (fork) 2 διεργασίες. • Οι διεργασίες Παιδιά θα τυπώνουν το PID τους • Η διεργασία Πατέρας θα βρίσκεται σε αναμονή (wait) μέχρι να ολοκληρώσουν οι διεργασίες Παιδιά την εκτέλεση τους. > #include <sys/types.h> #include <unistd.h> #include <signal.h> #include <stdio.h> int main () { pid_t child1_pid, child2_pid, ch_pid; int status; signal(SIGCHLD, SIG_IGN); /* spawn first child */ if ((child1_pid = fork()) == 0) { /* first child process */ fprintf(stdout, "hello from child %d\n", getpid()); sleep(10); } else { /* parent process */ /* spawn second child */ if ((child2_pid = fork()) == 0) { /* second child process */ fprintf(stdout, "hello from child %d\n", getpid()); sleep(10); } else { /* parent process (again) */ /* wait for all childs to terminate */ fprintf(stdout, "parent %d is waiting for all childs to terminate\n", getpid()); ch_pid = wait(&status); } } return (0); } Τα υπόλοιπα ερωτήματα δεν έχουν να κάνουν με C system calls και είναι πιο απλά. Υ.Γ. Ο κώδικας που έχεις δώσει δεν έιναι σε C αλλα σε C++ νομίζω!
poscaman Δημοσ. 6 Φεβρουαρίου 2010 Δημοσ. 6 Φεβρουαρίου 2010 και ενδέχεται να την έχει βρει κάπου έτοιμη στο ιντερνετ... ΑΜΑΝ
voulaji Δημοσ. 6 Φεβρουαρίου 2010 Δημοσ. 6 Φεβρουαρίου 2010 Ευτυχώς για την ανθρωπότητα που ο poscaman γεννήθηκε ξερόλας!! Τόσο τρομερό είναι για τη φίλη mariakal, να ζητά βοήθεια (ενδεχομένω) απο το internet? Άλωστε όποιος δεν θέλει να τη βόηθήσει ας μην απαντήσει. Τα καόβουλα σχόλια δεν νομίζω ότι ωφελούν σε κάτι.
poscaman Δημοσ. 6 Φεβρουαρίου 2010 Δημοσ. 6 Φεβρουαρίου 2010 Αγαπητέ μου, δεν γεννήθηκα ξερόλας. Έχω ρωτήσει άπειρες φορές, από τα πιο χαζά θέματα στο φόρουμ. Το ζήτημα όμως είναι ότι και εσύ αλλά και ο topic starter, πάτε να τελειώσετε μια σχολή με τις πλάτες του insomnia. Θέλεις να σου κάνω quote μήνυμα που σε γειώνει moderator του forum???????
voulaji Δημοσ. 6 Φεβρουαρίου 2010 Δημοσ. 6 Φεβρουαρίου 2010 Καταρχίν, είμαι γένους θηλυκου...... Κατά δεύτερον, ίσως να τα βλέπουμε τα πράγματα από διαφορετική οπτική γωνία, οπότε μπορεί να έχεις κ δίκιο!! Τρίτον, έτσι δε βοηθάμε την mariakal .... και Τέταρτον έχεις ωραία ιστοσελίδα!!
poscaman Δημοσ. 6 Φεβρουαρίου 2010 Δημοσ. 6 Φεβρουαρίου 2010 Καταρχίν, είμαι γένους θηλυκου......Κατά δεύτερον, ίσως να τα βλέπουμε τα πράγματα από διαφορετική οπτική γωνία, οπότε μπορεί να έχεις κ δίκιο!! Τρίτον, έτσι δε βοηθάμε την mariakal .... και Τέταρτον έχεις ωραία ιστοσελίδα!! Ουπς. Sorry Το μέλλον θα δείξει Η mariakal έχει ήδη βοηθηθεί, και δεν απανήλθε με απορίες που θα μπορούσε κάποιος να την βοηθήσει. Να σαι καλά. Ευχαριστώ. Μη μου πεις οτι είσαι και CEIDού... θα πηδηχτώ απ' το παράθυρο... αυτα.... τέλος το offtopic, απο μένα, πάω να την πέσω στην voulaji μέσω ΡΜ
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.