IO.popen 호출이 포함 된 Ruby 스크립트가 있습니다. Ctrl + C를 사용하여 popen 호출을 취소 할 수 있습니다 (Signal.trap("SIGINT")
을 사용하고 kill -2 #{popen_pid}
을 호출합니다). 이 잘 작동하고 CTRL + C를 누르면 kill -2
자체를 종료하기 전에 popen 프로세스가 일부 정리를 실행합니다.Ruby에서 Ctrl + C를 에뮬레이트하는 방법은 무엇입니까?
내 문제 : popen 프로세스가 너무 오래 걸리는 경우에도 이와 동일한 문제가 발생할 수 있습니다. 그러나 CTRL + C 동작을 에뮬레이트 할 수 없습니다. 루비 스크립트의 pid에 Process.kill
을 사용하면 정리 작업없이 모든 작업이 끝나고 popen 프로세스에서 Process.kill
을 실행해도 아무 효과가 없습니다. 루비 스크립트의 pid와 popen pid에 kill -2
을 호출하기 위해 백틱을 사용하여 쉘에 직접 액세스를 시도했지만 아무 것도하지 않습니다.
아무도 제안 사항이 있습니까?
이것은 popen 호출을 멈추는 데 작동하지만 본질적으로 -9 신호로 호출합니다. 프로세스가 내부 정리를 실행해야하기 때문에 -2가 필요합니다 ... – ldanielw1