tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: snprintf(3) and friends async-signal safety?
On Wed, 22 Dec 2010 18:07:50 +0200
Jean-Yves Migeon <jeanyves.migeon%free.fr@localhost> wrote:
> Hi list,
>
> While working on my msgfmt thingy for dd(1) [1], I found that
> snprintf(3) gets used in summary(), which is a function that can be
> called via the SIGINFO handler.
>
> Unfortunately, I am not quite certain of what I read; a quick look at
> snprintf(3) code in libc/stdio makes me believe that the function is
> _not_ async signal safe (it is not listed in signal(7) either), but is
> still used in as-is in dd(1).
>
> Question is: is it really safe to use it in a signal handler inside
> NetBSD?
>
> [1]
> http://mail-index.netbsd.org/tech-userlevel/2010/12/04/msg004195.html
>
> --
> Jean-Yves Migeon
> jeanyves.migeon%free.fr@localhost
Well you could hangle Unix signals synchronously by using a thread which waits
for signals with sigwait(). Usually you block certain signals in main thread,
then one (signal catching) thread calls sigwait() waiting for a signal. When
the signal arrives, signal catching thread stops/restarts other threads,
depending on what the signal was meant to do.
Home |
Main Index |
Thread Index |
Old Index