Making the things that terminate immediately / freeze happen without a half-second delay. And added some tests with one of the children frozen.
Skip the crash tests when running a normal subprocess in windows - it throws up a dialog so can't be run unattended.
Clean up better when a subprocess terminates.
Make sure we always unstick our queues.
Furrther robustness improvements to the queue unsticking.
Refactor to split the sending and waiting for responses out in to two bits.
Refactor to split the sending and waiting for responses out in to two bits.
Refactor to split the sending and waiting for responses out in to two bits.
Finished the refactor to split the sending and waiting for responses out in to two bits, then implemented a method to send to all children, and then wait for all of the responses after that (with a single timeout). Then used that to implement a better start and stop process.
I've decided to close the input stream after sending the close command. It seems neat.
Adding a set of tests that use pythonw.exe instead of python.
Wait for all the child ports, too.
Add a file-based log handler once we've parsed our child number.
To get these tests to work, I need to set close_fds to False when I launch the subprocess. Otherwise, my parent process gets a 'IOError: [Errno 9] Bad file descriptor' trying to read its children's error and output streams. This needs to be addressed.
Try and use PROCESS_QUERY_LIMITED_INFORMATION on versions of windows where it is available (i.e > XP/2003). This  works for the processes of other users (e.g. the ones created by our windows service). Also, the python implementation of os.kill doesn't work for those processes, so I'm using the windows API directly rather.
Added tests for a windows service as the parent process.
Add tests that send the stop command through the service manager.
Move the setting of the job object in to the main library from the test parent process. And added some logging.