你怎么杀掉Ruby中的PTY.spawn调用?

时间:2010-04-12 11:40:52

标签: ruby process kill pty

如果我运行这样的命令,使用ruby的pty类,如果找到某个输入字符串,我怎么杀它?

cmd = "appcfg.py update cdn"
PTY.spawn("#{cmd} 2>&1") do | input, output, pid |
  begin
    input.expect("Email:") do
      output.write("#{credentials[:username]}\n")
    end
    input.expect("Password:") do
      output.write("#{credentials[:password]}\n")
    end
    if input.gets == "SOMETHING"
      EXIT!
    end
  rescue Exception => e
    puts "GAE Error..."
  end
end

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

这样的事情怎么样?

processes =  %x[ps -A].split("\n")
processes.each do |p|
  if p.include?('ruby1.9')
    pid = p.split(' ')
    %x[kill #{pid[0].to_i}]
  end
end

如果你运行ruby1.9(这将会杀死所有ruby1.9进程!)(所以如果你在你的服务器上运行一些其他ruby prog或者你必须做一些if语句来检查哪个进程)它是。