[net.unix-wizards] USG 5.0 r2: can my program tell if i

dan@haddock.UUCP (08/14/84)

> What you should do is check to see if SIGINT was already being ignored
> when you try to handle it.  (This indicates that you're in the background.)
> If it was being ignored, reset it to that state.
>
>	 if (signal(SIGINT, clean_routine) == SIG_IGN)
>		 signal(SIGINT, SIG_IGN);

Right description, wrong code.	You've left a hole; if the signal arrives
after the first signal() call and before the second, it will get caught even
though it was ignored initially.  The correct code is

	if (signal(SIGINT, SIG_IGN) != SIG_IGN)
		signal(SIGINT, clean_routine);

This is explained in Brian Kernighan's document on UNIX programming that
comes with many (all?) UNIX systems.