#!/usr/bin/perl -w use strict; use IPC::Shareable; use Data::Dumper; my %stuff; my $shm = tie %stuff, 'IPC::Shareable', undef, { destroy => 1 }; $SIG{INT} = sub { die "$$ dying\n" }; $SIG{CHLD} = sub { wait() }; my @children; foreach (1..10) { my $pid = fork(); if ($pid == 0) { push(@{$stuff{$_}}, $$); # this leaks # $stuff{$_} = $$; # this doesn't exit 0; } else { push (@children,$pid); } } waitpid ($_,0) foreach (@children); print Dumper(%stuff); print "\n\nCLEAR YOUR SHARED MEMORY\n"; print "(ipcs -m ; ipcrm -m ; ipcs -s ; ipcrm -s)\n";