Η συνάρτηση σήματος () στο C ++ ορίζει τον χειριστή σφαλμάτων για το καθορισμένο σήμα.
σήμα () Πρωτότυπο
άκυρο (* σήμα (int sig, void (* func) (int))) (int);
Η signal
συνάρτηση ορίζει μια μέθοδο χειρισμού του σήματος. Ο χειριστής σήματος μπορεί να ρυθμιστεί έτσι ώστε να εκτελείται μία από τις ακόλουθες ενέργειες:
- Προεπιλεγμένος χειρισμός σήματος.
- Αγνοήστε το σήμα.
- Η λειτουργία που ορίζεται από τον χρήστη καλείται να χειριστεί το σήμα.
Ορίζεται στο αρχείο κεφαλίδας "> αρχείο κεφαλίδας.
σήμα () Παράμετροι
- sig: Το σήμα που πρέπει να χειριστεί ο χειριστής σήματος. Μπορεί να πάρει μία από τις ακόλουθες τιμές:
- SIGABRT
- SIGFPE
- SIGILL
- ΥΠΟΓΡΑΦΗ
- SIGSEGV
- ΥΠΟΓΡΑΦΟΣ
- χειριστής: Ο χειριστής σήματος που χειρίζεται το σήμα. Μπορεί να είναι ένα από τα ακόλουθα:
- SIG_DFL: Προεπιλεγμένος χειρισμός.
- SIG_IGN: Αγνοήστε το σήμα.
- Δείκτης σε μια λειτουργία: Λειτουργία καθορισμένη από τον χρήστη για το χειρισμό του σήματος. Η υπογραφή της συνάρτησης πρέπει να είναι ισοδύναμη με την ακόλουθη:
άκυρη διασκέδαση (int sig)
σήμα () Τιμή επιστροφής
Με επιτυχία, επιστρέφει τον προηγούμενο χειριστή σήματος και στην αποτυχία επιστρέφεται SIG_ERR.
Παράδειγμα: Πώς λειτουργεί η λειτουργία σήματος ()
#include #include using namespace std; sig_atomic_t signalled = 0; void handler(int sig) ( signalled = 1; ) int main() ( signal(SIGINT, handler); raise(SIGINT); if (signalled) cout << "Signal is handled"; else cout << "Signal is not handled"; return 0; )
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
Το σήμα αντιμετωπίζεται