Spawn children in their own process groups, and deliver SIGINT to each group
This change fixes the issue described in https://github.com/strongloop/node-foreman/issues/176 by:
- Making
nfspawn each child process in its own distinct process group via thedetachedoption - Delivering
SIGINTsignals to children to the entire process group, rather than just the direct child - Ensuring that
nfcan handle the delivery of multiple consecutiveSIGINTsignals to itself without exiting prematurely
Changes 1 & 2 are inspired by the approach taken by goreman (a similar tool implemented in Go). Change 3 is somewhat unrelated, but was added in order to deal with the problem described in https://github.com/pnpm/pnpm/issues/7374 (sometimes, a parent process of nf might itself forward a SIGINT to nf, and the terminal might also deliver that signal).
@benweint Would you be willing to push up a your fork to npm, appropriately renamed? This is an important project!
StrongLoop is totally dead, and their most popular tech (Loopback) appears to live on (after being acquired?) as a distinct organization. I don't think there is any hope of this repo getting any more attention... :(
Perhaps foreman-ode... it works on multiple levels.