C++ Tutorial/Development/signal

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Using signal handling

<source lang="cpp">#include <iostream>

  1. include <iomanip>
  2. include <signal.h>
  3. include <stdlib.h>
  4. include <time.h>

using namespace std; void signal_handler( int ); int main() {

  signal( SIGINT, signal_handler );
  srand( time( 0 ) );
  
  for ( int i = 1; i < 101; i++ ) {
     int x = 1 + rand() % 50;
     
     if ( x == 25 )
        raise( SIGINT );
        
  }
  return 0;

} void signal_handler( int signalValue ) {

  cout << "\nInterrupt signal (" << signalValue
       << ") received.\n"
       << "Do you wish to continue (1 = yes or 2 = no)? ";
  int response;
  cin >> response;
  while ( response != 1 && response != 2 ) {
     cout << "(1 = yes or 2 = no)? ";
     cin >> response;
  }
  
  if ( response == 1 )
     signal( SIGINT, signal_handler );
  else
     exit( EXIT_SUCCESS );

}</source>