Greetings,

On UNIX, when you send SIGINT or Ctrl-C to a make process using -j, the child 
processes terminate and the child targets are removed if they exist.  According 
to this post, it's the responsibility of the OS to send signals to all the 
processes in the same process group.  So all processes get the SIGINT, 
including all instances of make AND all programs make invokes.

http://lists.gnu.org/archive/html/make-w32/2005-08/msg00005.html

On Windows, it appears that SIGINT is not propagated to make child processes by 
the OS.  This post indicates that when make receives a SIGINT it waits for all 
child processes to exit before proceeding.

http://savannah.gnu.org/bugs/?40322

Would it be possible to update make on Windows to behave more like make on 
UNIX?  I have a use case where 'make -j32' is invoked on 32-core Windows 
servers.  Occasionally we need to stop the build and update the build area, but 
it can take some time for the 32+ compilers/linkers/etc. to finish.  The 
ability to send a SIGINT to the top-level make and have it propagate throughout 
the process group would be very helpful.

Could something like this be accomplished using Console Process Groups?

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682083(v=vs.85).aspx
http://stackoverflow.com/questions/1453520/run-arbitrary-subprocesses-on-windows-and-still-terminate-cleanly

Thought I'd ask for your opinions before I investigate further.

Thanks!

--Troy Runkel


_______________________________________________
Make-w32 mailing list
Make-w32@gnu.org
https://lists.gnu.org/mailman/listinfo/make-w32

Reply via email to