Ich versuche SIGINT (CTRL + C) zu fangen. Ich möchte, dass, wenn Benutzer STRG + C eingeben, Kindprozess zu beenden, aber der Vater-Prozess normal fortgesetzt wird. Wenn ich Kindprozess in meinem Programm habe, funktioniert es ok, aber wenn ich nicht Kindprozess habe, bekomme ich "segmentation fault".segmentation störung signal handler sigint
Ich habe dies getan:
void sig_handler(int signo);
//========================================
int main()
{
// CTRL + C => SIGINT handler
struct sigaction act;
act.sa_handler = sig_handler;
sigfillset(&act.sa_mask);
act.sa_flags = 0;
// Catch the signal
sigaction(SIGINT, &act, NULL);
...
// done some checks and then fork a child.
}
// SIGINT handler
void sig_handler(int signo)
{
// dont know what to write here
}
bevor Sie Ihren Kindprozess abzweigen Holen Sie sich die aktuelle Prozess-ID, dann fork es Ihr Kind und erhalten Sie seine Prozess-ID auch dann bei der Handhabung des Signals überprüfen, ob ctrl c ist für die Elternprozess-ID oder nicht dann implementieren Sie Ihre Logik entsprechend. – FZE
Auf welcher Codezeile erhalten Sie den Segmentierungsfehler? –