Bonjour,

j'utilse une gestion des signal classique comme ci-dessous pour intercepter des signaux d'erreurs dans mon code. J'essaye en vain un moyen dans ma fonction handle_siganl un moyen de connaitre la fonction d'orrigine du signal, ici par example "func_test".
Je ne pense pas qu'il est y ait un moyen, mais au cas ou quelqu'un aurait déjà fait ca, je suis preneur.
Merci d'avance

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
 
void handle_signal(int param)
{
  std::string err,err2;
  err="Critical system error : ";
  err2="Unknow error\n";
  if (param==2)  err2="Interactive attention\n";
  if (param==4)  err2="Illegal instruction\n";
  if (param==8)  err2="Floating point error\n";
  if (param==11) err2="Segmentation violation\n";
  if (param==22) err2="Abnormal termination (abort)\n";
 
  printf("%s\n",err.c_str());
}
 
//-------------------------------------------------------------------------
void func_test()
{
  raise(SIGSEGV);
}
 
int main(int argc, char *argv[])
{
  signal (SIGILL, handle_signal);
  signal (SIGFPE, handle_signal);
  signal (SIGSEGV,handle_signal);
  ..
  .
  // suite du code
 func_test();
  ...
}