Here's a job control conundrum for you.
Ben Scott
dragonhawk at gmail.com
Fri Apr 13 18:51:43 EDT 2007
On 4/13/07, Steven W. Orr <steveo at syslang.net> wrote:
>> My terminology might be wrong, but I was referring to the fact that
>> signals are not processed synchronously.
>
> Assuming we're in a modern sigaction environment instead of an old signal
> environment, all signals will queue up if you have set SIG_BLOCK ...
Okay... I think that's a "yes". :) Point was that, just because
you sent a signal successfully, doesn't mean the target process has
actually had a chance to process that signal yet. As another example,
if you send SIGHUP to a stopped process, the signal doesn't get acted
upon until the process is continued.
$ cat
[1]+ Stopped cat
$ killall --signal HUP --verbose cat
Killed cat(21642) with signal 1
$
$
$ fg
cat
Hangup
$
> ... except for SIGKILL which always goes right through.
Oh. Right. Good point.
$ cat
[1]+ Stopped cat
$ killall --signal KILL --verbose cat
Killed cat(21644) with signal 9
[1]+ Killed cat
$
So much for that idea.... :-/
> The best writeup of signal stuff that I've seen is in the OReilly book
> called UNIX Systems Programming for SVR4 (Nutshell Handbook). Other
> descriptions never punched the conceptual stuff through to me as well.
One more thing to read... :)
-- Ben
More information about the gnhlug-discuss
mailing list