2013-08-14 16 views
8

Dalla documentazione per Process.kill:Quali segnali Process.kill sono disponibili su Windows?

invia il segnale dato al id processo specificato (s) con PID positivo. Se pid è zero, il segnale viene inviato a tutti i processi il cui gruppo ID è uguale all'ID di gruppo del processo. il segnale può essere un numero di segnale intero o un nome di segnale POSIX (con o senza prefisso SIG ). Se il segnale è negativo (o inizia con un segno meno), uccide i gruppi di processi anziché i processi. Non tutti i segnali sono disponibili su tutte le piattaforme.

Ok, è piuttosto vago. Quali segnali sono disponibili su quali piattaforme? Ci sono segnali disponibili su Windows?

(ho provato Process.kill(9, pid) su Windows prima e non ha generato un errore. Non ha ucciso il processo sia anche se ... Ma Process.kill("TERM", pid) ha fatto generare un errore. Vai a capire.)

+1

NB che fondamentalmente "falsi" segnali in Windows facendo "eseguendo un comportamento equivalente" al linux equivalente. .. – rogerdpack

risposta

16

credo di avere trovato una soluzione. Per scoprire che cosa segnala vostri supporti piattaforma corrente, eseguire questo:

ruby -e "puts Signal.list" 

Su Windows:

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

In questo articolo

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

C'è una buona menzione di process.kill e il suo meccanismo turn-around

+0

modificato il link –

+0

Ottimo articolo. È un po 'vecchio, ma ci sono molte cose buone lì dentro. L'articolo – Ajedi32

+0

è piuttosto vecchio, ora 'Process.spawn' ha l'opzione': new_pgroup' per Windows. Mi chiedo se 'kill (-pgroup)' funzioni ora su Windows. Ma non ho un ambiente Windows a portata di mano e sono molto riluttante a trovare una macchina Windows e installare roba su di esso per testare. – akostadinov

Problemi correlati