I can't find the proper solution to a perl problem...
In a perl program I am using exec to run a compiled binary. I need to run the binary over and over again. I have created a sub{} that performs the following:
opens a pipe
forks
The child process opens STDOUT on the pipe
The child process uses exec to run the binary
The parent process reads data from the pipe
both parent and child close their pipe handles
This works fine except it leaves the binary process as a <defunct> zombie. This eventually takes away all the file handles and starts giving an error along the lines of "unable to fork"
The manpage for ps says this:
Processes marked <defunct> are dead processes (so-called "zombies") that remain because
their parent has not destroyed them properly. These processes will be destroyed by init(8)
if the parent process exits.
What is the proper way to destroy a child process?