[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: dd hangs with SIGINT
From: |
Paul Eggert |
Subject: |
Re: dd hangs with SIGINT |
Date: |
Thu, 07 Apr 2005 12:07:15 -0700 |
User-agent: |
Gnus/5.1006 (Gnus v5.10.6) Emacs/21.4 (gnu/linux) |
There is a similar problem in csplit.c. The simplest fix there is to
not print an error message when an interrupt occurs and a file can't
be removed afterwards, and I've prepared a draft patch to do that,
which I'd like to test a bit more before installing.
The resulting csplit program still calls strcpy, sprintf, and strlen
inside a signal handler, and then exits from the program by killing
the process before the handler returns. POSIX doesn't say that these
three functions are async-signal-safe but I don't know of any host
where this method would fail, so I'm inclined to leave it alone even
if it's unportable in theory.
In looking over dd, I don't see such an easy fix as with csplit. So I
think it's better to rewrite dd so that its signal handlers call only
functions that POSIX guarantees are async-signal-safe. I've prepared
a draft patch to do that (the only function called from signal
handlers is 'signal'), but I'd like to test it a bit before submitting
it. The downside is that the patch assumes the POSIX behavior where
read and write fail with errno==EINTR when interrupted, and so it
won't work on ancient hosts where there's no way to get the POSIX
behavior even with sigaction. These days, though, I don't think we
need to worry about 4.3BSD hosts so I think this is OK.
- Re: dd hangs with SIGINT, Guillaume Chazarain, 2005/04/06
- Re: dd hangs with SIGINT, Bruno Haible, 2005/04/06
- Re: dd hangs with SIGINT, Jim Meyering, 2005/04/07
- Re: dd hangs with SIGINT, Guillaume Chazarain, 2005/04/07
- Re: dd hangs with SIGINT, Jim Meyering, 2005/04/07
- Re: dd hangs with SIGINT, Guillaume Chazarain, 2005/04/07
- Re: dd hangs with SIGINT, Jim Meyering, 2005/04/07
- Re: dd hangs with SIGINT, Guillaume Chazarain, 2005/04/08
- Re: dd hangs with SIGINT,
Paul Eggert <=
- Re: dd hangs with SIGINT, Andreas Schwab, 2005/04/07