2015-12-07 28 views
0

我有這樣的代碼:Ruby進程的問題

pid1 = fork { 
    system("rails new #{name_without_syms}") 
} 

Process.waitpid(pid1) 
cd("#{name_without_syms}") 

pid2 = fork { 
    system("rails g controller Main index") 
} 

Process.waitpid(pid2) 
rm_default_files("#{sh.pwd}") 
cp_files("#{sh.pwd}") 

如果我跑一次,它會工作,但下一次會無限地運行,但如果我將殺死所有的Ruby程序,它會工作。運行一次之後,我有兩個Ruby進程(ruby,ruby zombie)。

我該如何讓下次運行它,並最終殺死所有的Ruby進程?

+0

什麼是你的問題? – sawa

+0

下一次如何運行?如何殺死所有紅寶石進程? – khirnick

+0

是的,我可以使用這個:system(「killall -9 ruby​​」),但我認爲這是不正確的 – khirnick

回答

0

在卸載或代碼結束時,您需要運行fork進程來運行以下命令。

等待將防止殭屍進程......

Process.kill "TERM", pid 
Process.wait pid