`` `c
#include
#include
int main () {
sigset_t blocked_signals;
int i;
// Λάβετε το τρέχον σύνολο αποκλεισμένων σημάτων
αν (sigprocmask (0, null, &blocked_signals) ==-1) {
perror ("sigprocmask");
επιστροφή 1;
}
printf ("Αποκλεισμένα σήματα:\ n");
για (i =1;
αν (sigismember (&blocked_signals, i)) {
// Ελέγξτε εάν το σήμα είναι αποκλεισμένο. Ο Sigismember επιστρέφει 1 εάν είναι μέλος του σετ
printf ("σήμα %d ( %s) \ n", i, strsignal (i)); // strsignal μετατρέπει τον αριθμό σήματος σε συμβολοσειρά
// Εάν το strsignal δεν λειτουργεί (ορισμένα συστήματα ενδέχεται να μην το υποστηρίζουν), μπορείτε να χρησιμοποιήσετε έναν πίνακα αναζήτησης
// ή εκτυπώστε με μη αυτόματο τρόπο τον αριθμό σήματος.
}
}
επιστροφή 0;
}
`` `
Για να μεταγλωττίσετε και να εκτελέσετε αυτόν τον κωδικό:
1. Αποθήκευση: Αποθηκεύστε τον κώδικα ως αρχείο `.c` (π.χ. blocked_signals.c`).
2. compile: Χρησιμοποιήστε έναν μεταγλωττιστή C (όπως το GCC) για να συντάξετε τον κωδικό:
`` `bash
GCC blocked_signals.c -o blocked_signals
`` `
3. Εκτέλεση: Εκτελέστε το πρόγραμμα Compiled:
`` `bash
./blocked_signals
`` `
Η έξοδος θα απαριθμήσει τους αριθμούς σημάτων και τα ονόματά τους (εάν είναι διαθέσιμα μέσω του `strsignal ') που έχουν αποκλειστεί επί του παρόντος για τη διαδικασία. Σημειώστε ότι το σύνολο των μπλοκαρισμένων σημάτων θα εξαρτηθεί από την τρέχουσα κατάσταση της διαδικασίας και οποιαδήποτε διαχείριση σήματος.
Σημαντικές εκτιμήσεις:
* Χειρισμός σφαλμάτων: Ο κώδικας περιλαμβάνει βασικό χειρισμό σφαλμάτων για το `sigprocmask`. Οι ισχυρές εφαρμογές θα πρέπει να προσθέσουν πιο ολοκληρωμένους ελέγχους σφαλμάτων.
* Ονόματα σήματος: Η λειτουργία `strsignal` δεν είναι εγγυημένη να είναι διαθέσιμη σε όλα τα συστήματα ή να παρέχει ονόματα για όλα τα σήματα. Μπορεί να χρειαστεί να χειριστείτε περιπτώσεις όπου επιστρέφει μηδέν ή να χρησιμοποιήσετε έναν προσαρμοσμένο πίνακα αναζήτησης για να χαρτογραφήσετε τους αριθμούς σήματος σε ονόματα.
* Αριθμοί σήματος: Το εύρος των αριθμών σήματος (`nsig`) εξαρτάται από το σύστημα. Συνήθως ορίζεται στο `
* ΠΡΟΓΡΑΜΜΑΤΑ: Η λήψη πληροφοριών σχετικά με τα σήματα ενδέχεται να απαιτεί συγκεκριμένα προνόμια (π.χ., που λειτουργεί ως ρίζα). Εάν αντιμετωπίσετε σφάλματα άδειας, αυτό μπορεί να είναι η αιτία.
Θυμηθείτε να συμβουλευτείτε την τεκμηρίωση του συστήματός σας για λεπτομέρειες σχετικά με το χειρισμό των σημάτων και τα διαθέσιμα συγκεκριμένα σήματα. Η συμπεριφορά και η διαθεσιμότητα λειτουργιών που σχετίζονται με σήματα μπορεί να διαφέρουν ελαφρώς σε λειτουργικά συστήματα που μοιάζουν με UNIX (Linux, MacOS, BSD κ.λπ.).
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα