On Mon, 22 Nov 2004 11:56:12 +0530, Jagadeesh Bhaskar P
<[EMAIL PROTECTED]> wrote:
> Hi,
> 
> I wrote a the small program, to c how signals can be caught by
> customized routines.
> 
> /*********** start of code ********/
> 
> #include <stdio.h>
> #include <signal.h>
> 
> void fe(void){
>        printf("floating pt exception:\n");
> }
> 
> int main(void){
>        signal(SIGFPE, (void *)fe);
>        printf("%f\n", (1/0));
>        return 0;
> }
> 
> /********** end of code *************/
> 
> It goes on catching the signal infinitely, and if i didnt do the
> customization of that signal handling, it comes only once and then
> exits.
> 
> What is the reason? Isnt it supposed to generate a signal once per
> event?
> 
> Someone please do reply,
> 
> --
> With regards,
> 
> Jagadeesh Bhaskar P
> R&D Engineer
> HCL Infosystems Ltd
> Pondicherry
> INDIA
> 

According to the history of UNIX, signal caught by signal function is
unreliable. You need to reload handler on each signal.
ie,
 void fe(void){
    printf("floating pt exception:\n");
signal(SIGFPE, (void *)fe);
}

It is a good idea to use sigaction(). It is a reliable function doing
the same thing .
see man sigaction

Regards manish
-
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

Reply via email to