#include #include #include static void doit( void ) { int x; if ( x ) printf( "Hello world!\n" ); } static void handler( int signo ) { doit(); } int main( void ) { struct sigaction sa; stack_t ss; ss.ss_sp = malloc( 8192 ); ss.ss_flags = SS_ONSTACK; ss.ss_size = 8192; sigaltstack( &ss, NULL ); sa.sa_handler = handler; sa.sa_flags = SA_ONSTACK; sa.sa_restorer = NULL; sigfillset( &sa.sa_mask ); sigaction( SIGINT, &sa, NULL ); while ( 1 ) { sleep( 1 ); } return 0; }