2010-04-12 3 views
2

ruby의 pty 클래스를 사용하여 이와 같은 명령을 실행하면 특정 입력 문자열을 찾으면 어떻게 죽입니까?Ruby에서 PTY.spawn 호출을 어떻게 종료합니까?

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

어때?

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 프로세스를 죽일 것이다! (당신이 당신의 서버 또는 뭔가 다른 루비 음식물을 실행하는 경우 if 문 일부를해야 할 것 그래서 ruby1.9를 실행하는 경우 어떤 프로세스인지 확인하십시오.

관련 문제