Πώς να επαναφέρετε το SIGINT στις προεπιλογές αφού του υποδείξετε κάποιο πρόγραμμα χειρισμού που ορίζεται από το χρήστη για κάποιο χρονικό διάστημα;
Περάστε SIG_DFL
ως το func
παράμετρος σε signal()
για επαναφορά της προεπιλεγμένης συμπεριφοράς:
signal(SIGINT, SIG_DFL);
Σήμερα, συνιστάται η χρήση του sigaction.
Επιπλέον, σας επιτρέπει να επαναφέρετε αυτόματα το πρόγραμμα χειρισμού σήματος στο προεπιλεγμένο πριν καλέσετε τον προσαρμοσμένο χειριστή σας την πρώτη φορά.
Ορισμός ενός χειριστή σήματος μίας χρήσης
#include <signal.h>
#include <stdio.h>
action.sa_handler = my_handler;
action.sa_flags = SA_RESETHAND;
if (sigaction(SIGINT, &action, NULL) == -1)
{
perror("Failed to install signal handler for SIGINT");
}
Ανατρέξτε σε αυτήν την ανάρτηση για να δείτε πώς να επαναφέρετε ένα πρόγραμμα χειρισμού σήματος στην προεπιλεγμένη, εάν δεν είναι ένα πρόγραμμα χειρισμού μιας χρήσης χρησιμοποιώντας το sigaction:https://stackoverflow.com/a/24804019/7044965