in reply to Re^3: Stop a .exe
in thread Stop a .exe

This is my Script:
use strict; use warnings; use Win32::Socketpair qw[ winopen2 ]; ## Run the command and get a bi-direction pipe to it. my $pipe = winopen2( 'PwrUsbCmd.exe 0 0 0' ); my @results = <$pipe>; print $pipe "\n"; print @results;
It is not working. The Output from 'PwrUsbCmd.exe' is:
PowerUSB is not connected Enter to continue ## Here I have to press enter to exit from this EXE +and it is not working.

Replies are listed 'Best First'.
Re^5: Stop a .exe
by BrowserUk (Patriarch) on Aug 22, 2012 at 01:15 UTC

    I think I've managed to re-create the situation you are seeing. I believe you are suffering from buffering.

    Please try the following code and report your results. This isn't intended as a complete solution, but rather a diagnostic to understand your problem.

    #! perl -slw use strict; use Win32::Socketpair qw[ winopen2 ]; ## Run the command and get a bi-direction pipe to it. my( $pid, $pipe ) = winopen2( 'RunMe.exe', $ARGV[0 ] // 10 ); ## preload the childs input buffer with the answer to the prompt; print $pipe "\n"; ## give the kid a chance to say whatever it has to say sleep 2; ## a nonblocking read to grab whatever has made it through the buffers ## which if the kid produced less output than the size of its output b +uffer ## and didn't flush them, may be nothing at all my $results = ''; sysread( $pipe, $results, 65536, length $results ); close $pipe; print for split "\n", $results; ## May produce no output

    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

    The start of some sanity?