use Win32::Semaphore; my $sem = new Win32::Semaphore(0,1) ... if( my $code_pid = fork() ) { sleep(5); $sem->release(); } elsif( defined $code_pid ) { print "Process executing.."; _spin(); bless $sem, 'do not destroy'; exit 0; ... sub _spin { SPIN: while(! $sem->wait(0)) { ...