In short: you cannot safely use printf
within a signal handler.
There’s a list of authorized functions in signal handler’s man page. There is not fprintf
in it.
That’s because this function is not reentrant, mainly because it can use malloc
and free
.
See this post for a detailed explanation.