POpen, opening lots of processes
Ferenc Wagner
wferi at afavant.elte.hu
Fri Jan 9 02:14:33 EST 2004
Hal Daume III <hdaume at ISI.EDU> writes:
> On Thu, 8 Jan 2004, Glynn Clements wrote:
>
>> What does the output from "ps" indicate?
>
> It lists all the processes as defunct:
>
> 19981 pts/5 Z 0:00 [suffixtree <defunct>]
> 19982 pts/5 Z 0:00 [suffixtree <defunct>]
> 19983 pts/5 Z 0:00 [suffixtree <defunct>]
> 19984 pts/5 Z 0:00 [suffixtree <defunct>]
> 19985 pts/5 Z 0:00 [suffixtree <defunct>]
> ...
>
>> if you have zombies (Z state), the program has terminated
>> but the parent (your program) hasn't called wait/waitpid
>> (the Haskell interface is getProcessStatus,
>> getProcessGroupStatus or getAnyProcessStatus).
>
> I don't mind evaluating the contents returned strictly,
> but I can't figure out how to force the process into a
> dead state...
They are dead, just not acknowledged by their parent, so the
OS keeps their exit statuses around.
> I don't see how any of these three functions accomplishes
> that... what am I missing?
These functions read the exit status, and the OS will clean
up. If you start them sequentially, then simply insert a
call to the appropriate function at a point where the
previous child is already finished. Or spawn a thread which
sequence_s nonblocking getAnyProcessStatuses... :) Never
tried myself. man waitpid
Feri.
More information about the Glasgow-haskell-users
mailing list