Search code examples
rubymultithreadingshoes

Killing Threads in Ruby Shoes doesn't seem to work?


I try to make this piece of code works in Ruby Shoes, but I can't succeed to kill the thread named "airodump". Each time I click on the "stop scanning" button, it doesn't do anything :s

Thanks

    button "scan networks" do
      airodump = Thread.new do
         `sudo airodump-ng --write tuto wlan0`
       end
       Thread.new do
         button "Stop scanning" do
           Thread.kill(airodump)
         end
       end
    end

Solution

  • Thread killing (in any language) is a pretty limited operation. In your case, the thread is stuck in a blocking call - the call to the subshell - and therefore cannot be killed.

    What you would need to do is kill the subprocess first. I don't know how to get the PID out of the backtick operator, so you would need to rather use Process.spawn (on ruby 1.9), gey the PID of the subprocess, and call Process.kill