2016-04-28 10 views
-4

Ich habe Schwierigkeiten, die Fähigkeit zu implementieren, Signale in einem Prozess mit C-Sprache zu erfassen.Erfassen von Signalen in C

Kann mir jemand mit einem Arbeitsbeispiel helfen?

Danke.

+0

Was Sie bisher versucht haben? Haben Sie sich andere online verfügbare Mindestarbeitsbeispiele angesehen? Wenn ja, mit welchen Problemen sind Sie konfrontiert, d. Hast du die Signalmanpage gelesen? Hier sind einige Ressourcen für den Einstieg: http://www.thegeekstuff.com/2012/03/catch-signals-sample-c-code/ und: https://gist.github.com/aspyct/3462238 –

Antwort

0

Sie müssen die signal.h Bibliothek verwenden.

Hier ist ein funktionierendes Beispiel, in dem ich SIGINT erfassen und eine Nachricht an STDOUT:

#include<stdio.h> 
#include<signal.h> 

void sig_handler(int signo) 
{ 
    if (signo == SIGINT) 
     write(0, "Hello\n", 6); 
} 

int main(void) 
{ 
    signal(SIGINT, sig_handler); 
    // Just to testing purposes 
    while(1) 
     sleep(1); 
    return 0; 
} 
+0

Es funktioniert perfekt, danke! Ich bin neu in der Programmierung und in Stack Overflow, vielen Dank für Geduld –

+0

'printf()' ist nicht async-Signal sicher. Um direkt einen Signalhandler zu schreiben, benutzen Sie 'write()'. – alk

+0

'printf()' dient nur dazu zu zeigen, dass ich das Signal erfasst habe, aber wie würdest du es empfehlen? @alk – rafaelcpalmeida