Subject: Re: signal handling and delivery question
To: <>
From: Chuck Swiger <cswiger@mac.com>
List: netbsd-users
Date: 07/16/2007 15:12:06
On Jul 16, 2007, at 2:44 PM, Christos Zoulas wrote:
>> Control-C generates SIGTSTP, rather than SIGSTOP.
>> The former signal can be caught or ignored, the latter cannot.
>
> That is ^Z, ^C generates SIGINT. stty -a will tell you the current
> settings. You care about "susp" and "intr".

Yes, you're right.

>> I suspect that if the first pending signal is SIGKILL or something
>> else which cannot be caught or ignored, then the effect of that
>> signal happens immediately (which is the intention); however, if the
>> process is in a syscall where normal signal delivery is held until
>> return, and you deliver such a signal and then a SIGKILL, the second
>> pending signal is queued behind the first signal rather than being
>> processed immediately.
>
> Non realtime signals are not queued, they are kept in a bitmask.
> Lower numbered signals are delivered first.

OK, thanks for the details.  In Mach, events which become BSD signals  
are queued as messages to the exception port of a task if it is in  
the middle of a system call, and are dequeued as/when the task  
becomes runnable again.

-- 
-Chuck