bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: dd hangs with SIGINT


From: Guillaume Chazarain
Subject: Re: dd hangs with SIGINT
Date: Fri, 08 Apr 2005 13:55:44 +0200
User-agent: Mozilla Thunderbird 1.0.2-1.3.2 (X11/20050324)

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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]