in reply to Re: Tk and waitVariable on tied variables
in thread Tk and waitVariable on tied variables

Hi ant9000, thanks for trying out the code. I tried your ScalarTieTest module with the Tk test script, and I get the exact same behaviour as my Shareable module. Something smells fishy here... Perhaps this problem is Windows specific, may be the kill 'HUP', $pid didn't work as expected on Windows platform?

  • Comment on Re: Re: Tk and waitVariable on tied variables

Replies are listed 'Best First'.
Re: Re: Re: Tk and waitVariable on tied variables
by ant9000 (Monk) on Feb 16, 2004 at 11:40 UTC
    I think you hit the right spot! This is from perlport man page:
     "kill()" doesn't have the semantics of "raise()",
     i.e. it doesn't send a signal to the identified
     process like it does on Unix platforms.  Instead
     "kill($sig, $pid)" terminates the process identi­
     fied by $pid, and makes it exit immediately with
     exit status $sig.  As in Unix, if $sig is 0 and
     the specified process exists, it returns true
     without actually terminating it. (Win32)
    
    I can't tell you where to go from now, but at least you've found out what the problem is - and made me learn something, too :-)
      Well, i would have thought it's pretty obvious that's not the problem, as (if you'd run the program) when you press 'remote $wait++' the sub stop fires and $wait is incremented... See the output in my original post.

      Hmm, my perlport says that too, although i'd have to disagree. I've been sending & trapping signals on win32 for a while now and never noticed any real difference with unix...

      Update: perlport last update: v1.48, 02 February 2001 - that might explain it...

      use strict; $|++; my @signal = sort grep( $_ ne 'KILL', keys( %SIG ) ); push( @signal, 'KILL' ); # SIGKILL last print "Signals: ", join( ', ', @signal ), "\n\n"; my $pid; unless( $pid = fork ) { foreach my $type ( @signal ) { $SIG{$type} = sub { print " SIG$type received!\n" }; } while( 1 ) { sleep 1 } } sleep 1; foreach ( @signal ) { print "Sending pid $pid a SIG$_...\n"; kill( $_, $pid ); sleep 1; } __END__ Signals: ABRT, ALRM, BREAK, CHLD, CLD, CONT, FPE, HUP, ILL, INT, NUM05 +, NUM06, NUM07, NUM10, NUM12, NUM16, NUM17, NUM18, NUM19, NUM24, PIPE +, QUIT, SEGV, STOP, TERM, KILL Sending pid -1336 a SIGABRT... SIGABRT received! Sending pid -1336 a SIGALRM... SIGALRM received! Sending pid -1336 a SIGBREAK... SIGQUIT received! Sending pid -1336 a SIGCHLD... SIGCLD received! Sending pid -1336 a SIGCLD... SIGCLD received! Sending pid -1336 a SIGCONT... SIGCONT received! Sending pid -1336 a SIGFPE... SIGFPE received! Sending pid -1336 a SIGHUP... SIGHUP received! Sending pid -1336 a SIGILL... SIGILL received! Sending pid -1336 a SIGINT... SIGINT received! Sending pid -1336 a SIGNUM05... SIGNUM05 received! Sending pid -1336 a SIGNUM06... SIGNUM06 received! Sending pid -1336 a SIGNUM07... SIGNUM07 received! Sending pid -1336 a SIGNUM10... SIGNUM10 received! Sending pid -1336 a SIGNUM12... SIGNUM12 received! Sending pid -1336 a SIGNUM16... SIGNUM16 received! Sending pid -1336 a SIGNUM17... SIGNUM17 received! Sending pid -1336 a SIGNUM18... SIGNUM18 received! Sending pid -1336 a SIGNUM19... SIGNUM19 received! Sending pid -1336 a SIGNUM24... SIGNUM24 received! Sending pid -1336 a SIGPIPE... SIGPIPE received! Sending pid -1336 a SIGQUIT... SIGQUIT received! Sending pid -1336 a SIGSEGV... SIGSEGV received! Sending pid -1336 a SIGSTOP... SIGSTOP received! Sending pid -1336 a SIGTERM... SIGTERM received! Sending pid -1336 a SIGKILL... (child dies)

      - ><iper

      use japh; print;