Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Aug 1997 01:19:37 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        ache@nagual.pp.ru, terry@lambert.org
Cc:        current@FreeBSD.ORG, sos@sos.freebsd.dk
Subject:   Re: siginterrupt (was Re: Error in sleep !)
Message-ID:  <199708131519.BAA16131@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>> POSIX says that system calls will not be restarted by default (the
>> historical System V behaviour for signals).
>
>Could you please send exact quote just about this particular thing?
>Many times POSIX is very unclear or can be misinterpreted.

It is usually very clear :-).  I don't have the exact quote handy, but
the main point is that sa_flags == 0 gives "normal" behaviour (with no
restart, etc).  POSIX doesn't define any interesting SA_* macros for
the flags; it only reserves SA_*.  Some systems define an SA_RESTART
macro for restarting syscalls.

>Currently siginterrupt and signal man pages says nothing about POSIX
>conformance, so manpages are right independently of how we interpretate
>POSIX.

siginterrupt() and signal() aren't in POSIX.

>> The problem is that if I send a normally ignored signal to sleep(1)
>> after it goes to sleep but before the interval is expired, the
>> sleep doesn't keep going.
>
>POSIX says exactly that _any_ non-blocked and non-ignored signal should
>terminate sleep(3)/sleep(1) including default no-op signals like ^T, etc. 

sleep(1) always terminated on ^C (only caught signals are restarted).

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199708131519.BAA16131>