J'essaye la methode signal donne dans "signal.h", mais y a un truc que je comprend pas:
J'ai trouve un exemple sur le net pour detecter le signal "control D" :
Le code est le suivant :
------------------------------------------------------
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
void catch_int(int sig_num)
{
signal(SIGINT, catch_int);
printf("Don't do that\n" );
fflush(stdout);
}
int main(int argc, char* argv[])
{
/* set the INT (Ctrl-C) signal handler to 'catch_int' */
signal(SIGINT, catch_int);
/* now, lets get into an infinite loop of doing nothing. */
for ( ;; )
pause();
}
------------------------------------------------------------------
Je le compile bien, il marche bien, mais ma question est : Y a pas une erreur de typage????? la fonction catch_int prend bien un int en parametre, et on le voit pas a l'appel......
Par contre quand j'integre ce code dans mon exemple C++ il me met une erreure de typage qui est la suivante :
GT3MadCity.h:2449: no matches converting function `catch_int' to type `void (*)(int)'
Et j'aurais encore une question, ca veut dire quoi ca : typedef void (*sighandler_t)(int);
C'est dans l'aide sur signal (man signal)..
Merci