Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re^5: Stop Command In Perl

by mbethke (Hermit)
on Jul 12, 2012 at 22:21 UTC ( #981521=note: print w/ replies, xml ) Need Help??


in reply to Re^4: Stop Command In Perl
in thread Stop Command In Perl

Sure, I'd expect the signal emulation in Windows to be incompatible in some way but this particular phenomenon I blame on buffering. It's very very likely that the "echo" will have finished its output before the Perl process gets scheduled again so by the time the while() starts the whole output is sitting in STDIN's buffer already. You could try spawning the Windows equivalent of "(echo one; sleep 1; echo two)" and kill()ing that.


Comment on Re^5: Stop Command In Perl
Re^6: Stop Command In Perl
by monsoon (Pilgrim) on Jul 13, 2012 at 05:17 UTC
    Tried. Still get
    one
    two
    with this
    perl -e "$pid = open PIPE, '-|', 'echo one && ping -n 5 127.0.0.1 >nul + && echo two';$/=' '; while (<PIPE>){ print $_ . \"\n\"; kill 2, $pid +}"
    Doesn't look like a buffering issue, more of a kill portability one.
      Well, in this case you'd have to leave $/ alone because there will be no spaces in your output, only newlines. There should be an extra blank line at the end of your output, right? The replies to this suggest kill 2, $pid does indeed work on Windows.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://981521]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (8)
As of 2014-12-27 23:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (177 votes), past polls