in reply to Re^3: Kill sent from perl expect not working
in thread Kill sent from perl expect not working

Thank you for your response Ikegami. I am running Expect in the verbose mode, so I would expect to see any errors spew on the screen. However, I took your advise and added the following two lines after the "kill" command above to see what is being returned:

$exp1->send_slow("$cmd\n"); $exp1->expect($timeout, -re=>'.*'); print "Got return from Expect:\n".$exp1->match()."\n";
But I get no return back from the pattern match:
Got command prompt: [root@fc10-test perl]# Sending kill commands to ch +ild processes: /bin/kill -INT 4361 Starting EXPECT pattern matching... at /home/csit/usr/perl/lib/site_perl/5.10.1/Expect.pm line 561 Expect::expect('Expect=GLOB(0x93611a0)', 10, '-re', '.*') call +ed at vpn_client1.pl line 132 main::sigInt('INT') called at vpn_client1.pl line 100 eval {...} called at vpn_client1.pl line 100 Got return from Expect: VPN process 4361 not dead yet 4361 ? 00:00:00 openvpn Sending kill -TERM Sending kill commands to child processes: /bin/kill -TERM 4361 Starting EXPECT pattern matching... at /home/csit/usr/perl/lib/site_perl/5.10.1/Expect.pm line 561 Expect::expect('Expect=GLOB(0x93611a0)', 10, '-re', '.*') call +ed at vpn_client1.pl line 132 main::sigInt('INT') called at vpn_client1.pl line 100 eval {...} called at vpn_client1.pl line 100 Got return from Expect: VPN process 4361 not dead yet 4361 ? 00:00:00 openvpn

Replies are listed 'Best First'.
Re^5: Kill sent from perl expect not working
by ikegami (Patriarch) on Apr 29, 2010 at 21:47 UTC

    I am running Expect in the verbose mode, so I would expect to see any errors spew on the screen.

    Assuming a bourne-ish shell, the error code returned is present in its $? variable. You'll need to output its contents. (To be clear, I don't mean Perl's similar $? variable.)

    ...Then again, my kill is quite noisy when it fails.

    $ kill -INT 21161 bash: kill: (21161) - Operation not permitted $ echo $? 1

      Hmmm...this is interesting. I changed my command from simply just the kill to kill -INT $vpnpid 2>&1 and now it seems to be working....

      Got command prompt: [root@fc10-test perl]# Sending kill commands to ch +ild processes: kill -INT $vpnpid 2>&1 Starting EXPECT pattern matching... at /home/csit/usr/perl/lib/site_perl/5.10.1/Expect.pm line 561 Expect::expect('Expect=GLOB(0x913e698)', 10, '-re', '.*') call +ed at vpn_client.pl line 153 main::sigInt('INT') called at vpn_client.pl line 97 eval {...} called at vpn_client.pl line 97 Return from command: Closing spawn id(4).

      I have run it several times, and it seems to work now, but why I cannot tell...