salve....ho il seguente problema!

Sto costruendo una shell.
Devo impostare il gestore del segnale SIGINT in modo tale che mi ripresenti il prompt (>).

La shel e' sempre in un ciclo while che aspetta i caratteri dall'utente.

Codice PHP:
signal(SIGINT,my_sgn_handler);

//-------------------------------

void sgn_handler(int signo)
    {
    if(
signo==SIGINT)
        {
        
printf("\n >");
        }
    
signal(signo,sgn_handler); //reimposto il gestore
        //QUA DEVO TORNARE NEL WHILE DI LETTURA DEI CARATTERI,MA UANDO LA FUNZIONE       //TERMINA CIO' NN AVVIENE


    

Quando premo ctrl^C il gestore di segnali che ho scritto viene invocato,ma un volta termintao non ritorna nel while di attesa dei caratteri,rimanendo in uno stato indefinito.
Non esiste una tecnica per fare un break point nel while,e ritornarci dal gestore dei segnali????