Ονομα
περιμένετε, waitpid - περιμένετε για τερματισμό της διαδικασίας
Σύνοψη
#περιλαμβάνω pid_t περιμένετε (int * κατάσταση );pid_t waitpid (pid_t pid , int * κατάσταση , int επιλογές );
οΠεριμένετε η λειτουργία αναστέλλει την εκτέλεση της τρέχουσας διαδικασίας μέχρι να βγει ένα παιδί ή μέχρι να παραδοθεί ένα σήμα του οποίου η ενέργεια είναι να τερματίσει την τρέχουσα διαδικασία ή να καλέσει μια λειτουργία χειρισμού σημάτων. Εάν ένα παιδί έχει ήδη βγει από την ώρα της κλήσης (μια διαδικασία που αποκαλείται "ζόμπι"), η λειτουργία επιστρέφει αμέσως. Οι πόροι του συστήματος που χρησιμοποιούνται από το παιδί απελευθερώνονται. οwaitpid η λειτουργία αναστέλλει την εκτέλεση της τρέχουσας διαδικασίας μέχρι ένα παιδί όπως καθορίζεται από το pid το όρισμα έχει λήξει ή μέχρι να παραδοθεί ένα σήμα του οποίου η ενέργεια είναι να τερματίσει την τρέχουσα διαδικασία ή να καλέσει μια λειτουργία χειρισμού σημάτων. Εάν ένα παιδί όπως ζητήθηκε από pid έχει ήδη εξέλθει από τη στιγμή της κλήσης (μια αποκαλούμενη διαδικασία "ζόμπι"), η λειτουργία επιστρέφει αμέσως. Οι πόροι του συστήματος που χρησιμοποιούνται από το παιδί απελευθερώνονται. Η αξία του pid μπορεί να είναι ένας από τους εξής: < -1 που σημαίνει να περιμένουμε για κάθε διαδικασία παιδιού της οποίας η αναγνωριστική ομάδα της διαδικασίας είναι ίση με την απόλυτη τιμή του pid . -1 που σημαίνει να περιμένετε για οποιαδήποτε διαδικασία παιδιού. αυτή είναι η ίδια συμπεριφορά πουΠεριμένετε εκθέματα. 0 πράγμα που σημαίνει να περιμένουμε οποιαδήποτε διαδικασία παιδιού με αναγνωριστικό της ομάδας διεργασιών είναι ίσο με εκείνο της διαδικασίας κλήσης. > 0 που σημαίνει να περιμένουμε το παιδί του οποίου η ταυτότητα διαδικασίας είναι ίση με την τιμή του pid . Η αξία του επιλογές είναι ένα OR μηδέν ή περισσότερες από τις ακόλουθες σταθερές: WNOHANG πράγμα που σημαίνει ότι πρέπει να επιστρέψετε αμέσως αν δεν έχει εγκαταλείψει κανένα παιδί. WUNTRACED που σημαίνει επίσης να επιστρέψουμε για τα παιδιά που έχουν σταματήσει και του οποίου το καθεστώς δεν έχει αναφερθεί. (Για επιλογές μόνο για Linux, δείτε παρακάτω.) Αν κατάσταση δεν είναιΜΗΔΕΝΙΚΟ, Περιμένετε ήwaitpid αποθηκεύστε τις πληροφορίες κατάστασης στην τοποθεσία που υποδεικνύεται με κατάσταση . Αυτή η κατάσταση μπορεί να αξιολογηθεί με τις ακόλουθες μακροεντολές (αυτές οι μακροεντολές λαμβάνουν το buffer του stat (anint) ως επιχείρημα --- όχι δείκτης στο buffer!): ΕΛΕΥΘΕΡΗ ( κατάσταση ) είναι μη-μηδέν εάν το παιδί βγήκε κανονικά. WEXITSTATUS ( κατάσταση ) αξιολογεί στα λιγότερο σημαντικά οκτώ ψηφία του κωδικού επιστροφής του παιδιού που τερμάτισε, το οποίο μπορεί να έχει οριστεί ως το επιχείρημα για μια κλήση προςέξοδος() ή ως επιχείρημα για ένα ΕΠΙΣΤΡΟΦΗ δήλωση στο κύριο πρόγραμμα. Αυτή η μακροεντολή μπορεί να αξιολογηθεί μόνο ανΕΛΕΥΘΕΡΗεπέστρεψε μη μηδέν. WIFSIGNALED ( κατάσταση ) επιστρέφει αληθές εάν η διαδικασία παιδιού εξήλθε εξαιτίας ενός σήματος το οποίο δεν είχε αλιευθεί. WTERMSIG ( κατάσταση ) επιστρέφει τον αριθμό του σήματος που προκάλεσε την τερματισμό της διαδικασίας του παιδιού. Αυτή η μακροεντολή μπορεί να αξιολογηθεί μόνο ανWIFSIGNALED επέστρεψε μη μηδέν. WIFSTOPPED ( κατάσταση ) επιστρέφει true αν η διαδικασία παιδιού που προκάλεσε την επιστροφή σταματά αυτήν τη στιγμή. αυτό είναι εφικτό μόνο αν η κλήση έγινε χρησιμοποιώνταςWUNTRACED. WSTOPSIG ( κατάσταση ) επιστρέφει τον αριθμό του σήματος που προκάλεσε τη διακοπή του παιδιού. Αυτή η μακροεντολή μπορεί να αξιολογηθεί μόνο ανWIFSTOPPED επέστρεψε μη μηδέν. Ορισμένες εκδόσεις του Unix (π.χ. Linux, Solaris, αλλά όχι AIX, SunOS) ορίζουν επίσης μια μακροεντολήWCOREDUMP ( κατάσταση ) για να ελέγξετε αν ο πυρήνας του παιδιού επεξεργάζεται. Χρησιμοποιήστε μόνο αυτό που περικλείεται στο #ifdef WCOREDUMP … #endif. Το αναγνωριστικό διαδικασίας του παιδιού που εξήλθε, ή το μηδέν εάνWNOHANG χρησιμοποιήθηκε και κανένα παιδί δεν ήταν διαθέσιμο, ή -1 για σφάλμα (σε αυτή την περίπτωση errno έχει οριστεί σε κατάλληλη τιμή). ECHILD εάν η διαδικασία που καθορίζεται στο pid δεν υπάρχει ή δεν είναι παιδί της καλούσας διαδικασίας. (Αυτό μπορεί να συμβεί για το δικό σας παιδί εάν η ενέργεια για το SIGCHLD έχει οριστεί σε SIG_IGN. Δείτε επίσης την ενότητα LINUX NOTES σχετικά με τα θέματα.) EINVAL αν το επιλογές το επιχείρημα ήταν άκυρο. EINTR ανWNOHANG δεν έχει οριστεί και δεν έχει μπλοκαριστεί σήμα ή αSIGCHLD πιάστηκε. Περιγραφή
Τιμή επιστροφής
Λάθη




