On Mon, Apr 26, 2010 at 12:04:23PM +0100, Matthew Booth wrote:
# Make certain the child process dies with the object if (defined($self->{pid})) { kill(9, $self->{pid}); waitpid($self->{pid}, WNOHANG); + $retval ||= $?;
So the non-obvious reason why this works is because waitpid returns the child status in $?.
+ my $retval = $? + # Note that this undef is what actually causes the underlying handle to # be closed. This is required to allow the RHEV target's temporary mount # directory to be unmounted and deleted prior to exit. $g = undef; + + $? ||= $retval;
I'm a bit confused by this though. AFAICT the Guestfs::DESTROY function shouldn't change $?. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into Xen guests. http://et.redhat.com/~rjones/virt-p2v