I'm confused as to why the attached code hangs. My understanding of Unix.fork () is that it completely clones the current process, which in my understanding, clones the processes's threads as well. Apparently, though, that is not the case, because I can't join the thread in both the parent and the child. Are threads created external to the process? I've played around with the source code and I've found that I can only join the thread in the parent process (i.e., if I remove the Thread.join from the parent process, it still hangs). Can someone explain this behavior? I'm needing to create several multi-threaded worker processes, and it would be much easier if I could simply create one, have it wait for a signal, and, on that signal, fork a clone of itself. Also, I'm needing to fork a process from in the middle of a multi-threaded application, so I assumed that my new process needed to join all of the threads and close all of the file descriptors. Is this not the case? -- --Jonathan Bryant jtbryant@valdosta.edu Student Intern Unix System Operations VSU Information Technology "Das Leben ohne Music ist einfach ein Irrtum, eine Strapaze, ein" Exil." ("Life without music is simply an error, a pain, an exile.") --Frederich Nietzsche "The three cardinal values of a programmer are laziness, impatience, and hubris." --Perl Man Page