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