2013-08-14 9 views
8

Z dokumentacji Process.kill:Jakie sygnały Process.kill są dostępne w systemie Windows?

wysyła podane sygnał id (a) określony proces, jeśli PID jest pozytywne. Jeśli pid wynosi zero, sygnał jest wysyłany do wszystkich procesów, których identyfikator ID grupy jest równy identyfikatorowi grupy procesu. Sygnał może być liczbą całkowitą lub nazwą sygnału POSIX (z lub bez prefiksu SIG ). Jeśli sygnał jest ujemny (lub zaczyna się od znaku minus), zabija grup procesowych zamiast procesów. Nie wszystkie sygnały są dostępne na wszystkich platformach: .

Dobra, to dość ogólnikowe. Jakie sygnały są dostępne na jakich platformach? Czy są jakieś sygnały dostępne w systemie Windows?

(próbowałem Process.kill(9, pid) na Windows przed i nie rzucać się błąd. To nie zabić proces albo mimo ... Ale Process.kill("TERM", pid) nie rzucać błąd. Idź figurę.)

+1

NB że to w zasadzie "podróbkami" sygnały w oknach by "wykonujący równoważne zachowanie" do równowartości Linux. .. – rogerdpack

Odpowiedz

16

Chyba znalazłem rozwiązanie. Aby dowiedzieć się, co sygnalizuje bieżące podpór platformy, uruchom to:

ruby -e "puts Signal.list" 

W systemie Windows:

{"EXIT"=>0, "INT"=>2, "ILL"=>4, "ABRT"=>22, "FPE"=>8, "KILL"=>9, "SEGV"=>11, "TERM"=>15} 
2

W tym artykule

http://blog.robseaman.com/2008/12/12/sending-ctrl-c-to-a-subprocess-with-ruby

jest dobry wzmianka process.kill i jego obrót wokół mechanizmu

+0

zmodyfikował link –

+0

Wielki artykuł. Jest trochę stary, ale jest tam sporo dobrych rzeczy. – Ajedi32

+0

artykuł jest dość stary, teraz 'Process.spawn' ma opcję': new_pgroup' dla Windows. Zastanawiam się, czy 'kill (-pgroup)' działa teraz w oknach. Ale nie mam pod ręką środowiska Windows i nie bardzo chcę znaleźć maszynę Windows i zainstalować na niej różne rzeczy do przetestowania. – akostadinov

Powiązane problemy