OSProcess: making sure that a child process always dies
David T. Lewis
lewis at mail.msen.com
Fri Mar 16 00:54:41 UTC 2007
On Thu, Mar 15, 2007 at 11:12:01AM -0700, Joshua Gargus wrote:
> Hi David,
> Thanks, that's what I had implemented. However, the OS X VM has a
> menu item "Quit do not save" which appears not to go through the
> regular Squeak shutdown process. Also, you never know when you'll
> have to terminate an image with "extreme prejudice" :-)
Well, if you anticipate terminating Squeak with the "kill" command
(i.e. send a SIGTERM signal to the VM), then you can do this:
[OSProcess accessor forwardSigTerm wait.
OSProcess thisOSProcess allMyChildren
do: [:child | child isRunning ifTrue: [child terminate]].
SmalltalkImage current snapshot: false andQuit: true] fork
This will allow Squeak to catch the Unix SIGTERM signal, and
terminate your child processes before exiting.
> I suppose that another option would be to stash the pids in a file
> and kill them on startup.
> Thanks to you and John for the suggestions. I'm not a unix expert,
> and I had no idea what support the underlying APIs had for this use
I was thinking that setpgrp() might do what you want, so I tried
adding this to OSPP, but it does not seem to behave quite as I
expected. I'll let you know if I figure something out.
More information about the Squeak-dev