UNIX の高度なプログラミング ドキュメントによると、SIGFPE シグナルはプログラムを終了し、コア ファイルを生成します。
これが私のプログラムです
#include <unistd.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
static void sig_fpe(int signo);
int
main()
{
int pid;
if(signal(SIGFPE, sig_fpe) == SIG_ERR)
printf("Signal error\n");
pid = 10;
pid = pid / 0;
exit(0);
}
static void
sig_fpe(int signo)
{
if(signo == SIGFPE){
printf("SIGFPE signal catch\n");
}
}
このプログラムを Linux マシンで実行すると、「SIGFPE signal catch」が繰り返し出力され、終了しません。サンプル出力は
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
.
.
.
.
何が問題ですか?