Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re^3: Stop Command In Perl

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


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

It would send a SIGPIPE which may or may not stop the command. This stuff is rather system specific and I'm not sure if what's the default on Windows. Just try.

Otherwise if you really need a Ctrl-C to be sent: this form of open() returns the child's PID so you can use kill 2, $pid to send the signal.


Comment on Re^3: Stop Command In Perl
Download Code
Re^4: Stop Command In Perl
by monsoon (Pilgrim) on Jul 12, 2012 at 18:40 UTC
    I think windows doesn't quite respect 'kill'. This (run on Windows 7 Professional, ActivePerl v5.12.4)
    perl -e "$pid = open PIPE, '-|', 'echo one two';$/=' '; while (<PIPE>) +{ print; kill 2, $pid}"
    outputs

    one two

    But this
    perl -e "$pid = open PIPE, '-|', 'echo one two';$/=' '; while (<PIPE>) +{ print; close PIPE}"
    outputs

    one

      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.

        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.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (18)
As of 2014-10-21 17:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (106 votes), past polls