blockcipher has asked for the wisdom of the Perl Monks concerning the following question:

Greetings monks,

I'm trying to create a server process which grabs X number of jobs and processes them. Without using fork, this works great, however I need to be concerned about runaway processes so I figured I can fork of a child process and monitor it from the parent process. I tried this with a basic test script and it worked great, however, in my real code when I call exit within my child to stop it, it kills the database connection in my parent process. Does anyone know a way to do this without killing my database connection? Would threads work without accidentally killing off my parent process if the child process behaves badly? My child process will be calling an external program and processing the results, so I want to be able to kill the process safely.

Thanks in advance.
  • Comment on Batch process management using fork problems

Replies are listed 'Best First'.
Re: Batch process management using fork problems
by friedo (Prior) on Mar 21, 2006 at 21:18 UTC
    Forking with a database connection from the parent process is rife with all sorts of problems. It should work if you open a separate database connection in the child which won't interfere with the parent.
Re: Batch process management using fork problems
by Otogi (Beadle) on Mar 21, 2006 at 21:41 UTC
    $dbh->{InactiveDestroy}= 1;
    That will stop child process from closing the parent process handler and you also need to create a handler in the child process.
      Great! That was just what I needed. Thanks!