in reply to Re: Perl forking and shared memory strangeness under Windows
in thread Perl forking and shared memory strangeness under Windows

Hi xiper, as BrowserUk has suggested earlier, there is a problem with forking under Windows. The cure is to create two separate instances of Shareable, one in child and one in parent. So the require should be after the fork. I modified the code to below and it ran without problems.
use strict; $|++; # do some unrelated forking with $share in scope unless( fork ) { exit 0 } require Win32::MMF::Shareable; tie( my $share, 'Win32::MMF::Shareable', 'share' ) || die; $share = 'foo'; # make sure child exits before continuing sleep 1; # set/get crashes print "----before\n"; $share = 'bar'; my $temp = $share; print "----after\n";

Replies are listed 'Best First'.
Re: Re: Re: Perl forking and shared memory strangeness under Windows
by xiper (Friar) on Feb 24, 2004 at 00:52 UTC
    Yes, but a solution that changes the logic of a program isn't practical. You're effectivly saying that "you can't fork with a tied variable in scope" - even if the child has nothing to do with the tied variable. My point was it isn't always possible (nor should it be) to redesign a program around this 'solution'.

    - ><iper

    use japh; print;