Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re^2: Stop Command In Perl

by anshumangoyal (Scribe)
on Jul 12, 2012 at 17:38 UTC ( #981453=note: print w/replies, xml ) Need Help??


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

Does closing the handler also kills the command?

Replies are listed 'Best First'.
Re^3: Stop Command In Perl
by mbethke (Hermit) on Jul 12, 2012 at 17:58 UTC

    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.

      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.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://981453]
help
Chatterbox?
[LanX]: should this be considered? Re: Parsing .txt into arrays
[LanX]: and this Re^4: Hash user input
[pryrt]: LanX, I would vote "keep" if it were considered: it's not helpful, but it could be taken multiple ways, not all of which are offenseive...
[pryrt]: 1nickt: if you are checking for valid user IDs, then I wouldn't care about the difference between 1.0 and 1: I would take either as a valid representation of the integer user ID#1
[LanX]: and this Re^2: extract column data
[Lady_Aleena]: I have two sub recurse { my ($directory, $other_var) = @_; my @files = file_list($directo ry); for my $file (@files) { if (-f $file) { do "stuff"; } if (-d $file) { recurse(" $directory/$file" , $other_var); } } } This was when I hated File::Find.
[tobyink]: 1nickt: your code?
[LanX]: pryrt: yeah, that's why I didn't consider, but the last >10 anonymous posts are from the same troll-person
[jdporter]: is there a module for expanding tabs in text?
[jdporter]: A: yes.

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (13)
As of 2017-05-24 20:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?