Inhaltsverzeichnis

raise()

#include <csignal>

int raise (int signum) 

Löst ein Signal signum aus.

Warnung: Destruktoren automatischer und statischer Objekte werden nicht aufgerufen. In C++ sollte der Mechanismus der Ausnahmebehandlung vorgezogen werden.

Parameter

signum Signalnummer

Ergebnis

Rückgabewert: 0 bei E

Siehe auch

abort(), signal().

Beispiel

raise.cpp
#include <cstdio>
#include <csignal>
using namespace std;
 
int ist_prim(int p)
{
  int erg = p>=2;
  for (int i = 2; i < p; ++i)
  {
    if (p%i == 0) erg = 0;
  }
  return erg;
}
 
int max_prim = 2;
 
void tschuess(int num)
{
  printf("groesste gefundene Primzahl: %d\n", max_prim); 
  signal(SIGINT, SIG_DFL);
  raise(SIGINT);           // unsauber ???
}
 
void zwischenbericht(int num)
{
  static int versuch = 1;
  printf("Versuch %d bei %d\n", versuch, max_prim); 
  signal(SIGINT, ++versuch < 3 ? zwischenbericht : tschuess);
}
 
int main()
{
  printf("Suche grosse Primzahl\nAbbruch mit Strg+C (3 Versuche)\n");
  signal(SIGINT, zwischenbericht);
  for (int n = 1; n > 0; ++n) 
  {
    if (ist_prim(n)) max_prim = n;     
  }
  return 0;
}