Method: TTK::Strategies::KillAll#run_impl

Defined in:
lib/ttk/strategies/KillAll.rb

#run_implObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/ttk/strategies/KillAll.rb', line 19

def run_impl 
  IO.popen('ps a') do |ps|
    ps.readline
    ps.each do |line|
      if line =~ /^\s*(\d+)(?:\s+\S+){3}\s+(.*)$/
        pid, name = $1.to_i, $2
        if name =~ @regexp
          @pids << pid
          begin
            Process.kill(@signal, pid)
          rescue
            raise RuntimeError, "Cannot kill #{name}:#{pid}"
          end
        end
      else
        raise RuntimeError, 'bad ps output'
      end
    end
  end
end