In article <[EMAIL PROTECTED]> you wrote:
> if the signal occurs after the wait system call, but before the result of
> the system call is stored in "wait_or_timeout_retval", the fact, that
> the system call succeeded is lost.
> this is (1) a bug in apache and (2) a problem of me that i want to solve.
> i thought others would have solved it, but this is obviously not true :-(
This should work:
static int wait_or_timeout_retval = -1;
static void alarm_handler(int sig) {
errno = ETIMEDOUT;
}
int wait_or_timeout (int *status) {
struct sigaction act;
wait_or_timeout_retval = -1;
sigaction(SIGALRM, 0, &act);
act.sa_handler = alarm_handler;
act.sa_flags &= ~SA_RESTART;
sigaction(SIGALRM, &act, 0);
alarm(1);
wait_or_timeout_retval = wait(status);
alarm(0);
return wait_or_timeout_retval;
}
--
Debian GNU/Linux 1.3 is out! ( http://www.debian.org/ )
Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]