Πώς να επαναφέρετε το SIGINT στις προεπιλογές αφού του υποδείξετε κάποιο πρόγραμμα χειρισμού που ορίζεται από το χρήστη για κάποιο χρονικό διάστημα;

Πώς να επαναφέρετε το 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