so I expect the forked new child should also have that value.No, it doesn't. While your assumptions about fork are correct (i.e. the child is a full copy of the parent) - the assignment $this->{'field'} = $newvalue is done after the fork happened, so it's visible at the next fork.
At startup you get 2 child processes, one of them reports 0, the other reports 1.
Why's that? One child has the value '1' in the 'field' member of the object, from the object constructor new(). The parent then (after having forked) assigns $newvalue - '0' - to the 'field' member, so at the next fork the value for 'field' is '0'.
Since the 'field' member isn't a shared variable, it can't be set in the parent from the child.
--shmem
_($_=" "x(1<<5)."?\n".q·/)Oo. G°\ /
/\_¯/(q /
---------------------------- \__(m.====·.(_("always off the crowd"))."·
");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}
In reply to Re^3: IPC and communication between Parent and Child Process
by shmem
in thread IPC and communication between Parent and Child Process
by hengha
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |