fenv.hとシグナルの微妙な関係
#include <fenv.h> #include <signal.h> #include <stdio.h> void sgn() { int val; val = fegetround(); printf("%d\n", val); fesetround(FE_UPWARD); } int main(void) { int val; fesetround(FE_DOWNWARD); signal(SIGUSR1, sgn); val = fegetround(); printf("%d\n", val); raise(SIGUSR1); val = fegetround(); printf("%d\n", val); return 0; }
i386$ gcc fenv.c && ./a.out 1024 0 1024
ppc64$ gcc fenv.c && ./a.out 3 3 3