Bruno Haible wrote:
I agree. The real good way to make this work on POSIX systems (without
assuming multithreading) is to use fork().
- Let the parent process fork a child process, block the signals SIGHUP,
SIGQUIT, SIGPIPE in the parent, and watch the child's exit status.
If the exit status of the child is 128 + SIGHUP/SIGQUIT/SIGPIPE,
print the statistics.
- Let the child process to the real I/O work.
With this approach, you don't install any signal handlers, therefore you
don't even need to think about which functions are async-signal safe. You
can use full malloc(), quote(), ngettext(), fprintf() etc. at will.
And how do you handle the SIGINFO thingy with that ?
Regards.
--
Guillaume
_______________________________________________
Bug-coreutils mailing list
Bug-coreutils@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-coreutils