%% "J. Grant" <[EMAIL PROTECTED]> writes: jg> 1) Testing on Debian GNU/Linux
jg> $ make -f makefile_sig.mak -j8 jg> <snip> jg> 15299 jg> 15300 jg> make: *** [temp1] Interrupt jg> make: *** [temp2] Interrupt jg> MSYS, with MSVC build: jg> make -f makefile_sig.mak -j8 jg> 15299 jg> 15300 jg> rxvt.exe jg> sh.exe jg> make.exe jg> main.exe jg> main.exe jg> Pressing <ctrl> + C kills make.exe. So main.exe and main.exe jg> continue on their own, sh and rxvt are broken, and have to be jg> killed and restarted. jg> would it be expected that the <ctrl>+c signal would not be passed jg> to the launched process? In UNIX/POSIX, it's the responsibility of the operating system to send signals to all the processes in the same process group. Since make doesn't change its process group ever, that means that all make programs, AND the processes that they invoke (compilers and whatever) are in the same process group (unless some program that make invokes explicitly changes its process group, which is not likely for the kinds of things make would run). That means that when you ^C, all the processes get a SIGINT, including all instances of make AND all programs make invokes. In a UNIX/POSIX system make doesn't need to "forward" any signals, and so there's no code in make to do that. jg> Also, could the GNU/Linux "Interrupt" description be expanded upon? jg> Perhaps: jg> "<ctrl>+C Interrupt received" First, on Linux that string is obtained from the operating system, because Linux has sys_siglist[]. Second, it's not appropriate to restrict this to ^C because lots of things could give a SIGINT to a process. -- ------------------------------------------------------------------------------- Paul D. Smith <[EMAIL PROTECTED]> Find some GNU make tips at: http://www.gnu.org http://make.paulandlesley.org "Please remain calm...I may be mad, but I am a professional." --Mad Scientist _______________________________________________ Make-w32 mailing list [email protected] http://lists.gnu.org/mailman/listinfo/make-w32
