in reply to Re: is sharing variables between forked process possible??
in thread is sharing variables between forked process possible??

another way is to use shared memory to have same value visible from each parent and childs process.

this is an example:


$ipckey = IPC_PRIVATE; 
$idshm = shmget( $ipckey, 200, 0666 ) || die "\nCreation shared memory failed $! \n";

$statusproc = "00000";
shmwrite( $idshm, $statusproc , 0, 100 ) || die "shmwrite $!";

if ( $pid == 0 )
{
       # do what I  have to do .............
      # end of task
       $statusproc = "1";
       shmwrite( $idshm, $statusproc , 0, 1 ) || warn "\n\n shmwrite $! \n";
}
else
{
    ................
         # check statusproc  from time to time 
        shmread( $idshm, $statusproc , 0, 1 ) || warn "\n\n shmread $! \n";
         if(  $statusproc  eq "1" )  # the child has ended it's task

  • Comment on Re^2: is sharing variables between forked process possible??

Replies are listed 'Best First'.
Re^3: is sharing variables between forked process possible??
by zentara (Cardinal) on Feb 17, 2006 at 13:36 UTC
    If you are going to use this method, be sure to check for any left over memory segments when done, with ipcs (on linux). These segments are not automatically cleaned up, although some modules may do it for you. To me, it's one of the drawbacks of this form of IPC, especially if your program gets killed before it can clean up, you may have a "zombie-like" shared memory segment (possibly with 777 permissions) floating around in your ram. See forking with Storable and IPC::ShareLite for example.

    I'm not really a human, but I play one on earth. flash japh