Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

DBI + fork ... child process kills handle

by DrManhattan (Chaplain)
on Jan 25, 2006 at 22:43 UTC ( [id://525589]=perlquestion: print w/replies, xml ) Need Help??

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

I'm having some difficulty with a program that establishes a database handle and then forks. When the child process exits, the database handle disconnects. Here's a conceptual example:
#!/usr/bin/perl use strict; use MyDBH; my $dbh = MyDBH->new(); print "Ping: ", $dbh->ping(), "\n"; my $kidpid = fork(); if ($kidpid == 0) { # child process print "Hello world from $$!\n"; exit; } # parent process print "Spawned child process: $kidpid\n"; print "Ping: ", $dbh->ping(), "\n";
Output looks like this:
Ping: 1
Hello world from 7022!
Spawned child process: 7022
Ping:

I think what's happening here is that the database handle's destructor is being called when the child process exits. If I replace the exit() call in the child with an exec() of something, the child process is replaced in memory and the destructor is never called. That seems kind of kludgey to me though, and I'm wondering if there's some other way around this. Is there any other way I can remove the object from the child's space or prevent the destructor from being called? I realize I can disconnect the handle prior to forking and the reestablish it, but I'm hoping there's a cleaner solution.

-Matt

Replies are listed 'Best First'.
Re: DBI + fork ... child process kills handle
by rnahi (Curate) on Jan 25, 2006 at 22:51 UTC

    You may want to have a look at the InactiveDestroy attribute.

    An example of its usage is in an old node (DBI 1.39).

    HTH

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://525589]
Approved by kutsu
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (2)
As of 2024-04-26 00:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found