I started up a ruby group at my university and this weeks 'challenge' was to take one of your old messy programs from another language and port it to Ruby, cleaning it up along the way. So I chose a terrible little Tk based wrapper around mpg123 as my challenge. However, now I'm thinking I should have picked something that showed how much easier Ruby is, rather than wander into the gray areas. The problem with this is, I need to run multiple processes. If I wanted it to just work on *nix I could just use fork, as I did in the perl script but a lot of the people in this group are tied down to Windows (much to my chagrin :-/) so I figured I'd be nice and make my ported script Windows friendly. So my question is, how exactly would you go about writing a program that could fire a process to a command line application, let it run, give control back to your main program, and kill the process if an event occurs (Like the pressing of a 'stop' button or even command line interaction). I thought about threading but since the threads are done in process I'm afraid of explosions and complications galore. So for those of you Windows savvy Rubyist's, what is a good way to do multi processing in such a scenario? For the brave, I've included a link to the source I'm porting, which is in obvious need of cleanup. http://cvs.sourceforge.net/viewcvs.py/tkmp3/tk-mp3/src/tk-mp3.pl?rev=1.1.1.1&view=auto