当另一个Ruby子进程完成时,杀死Ruby子进程

时间:2013-02-01 01:22:07

标签: android ruby process stress-testing monkey

我正在尝试使用Ruby编写脚本来在Android应用上运行monkey test。我坚持使用1.8 Ruby并且不能使用spawn。

有关详细信息,请参阅以下代码。出于某些原因,即使在logcat进程完成后,monkey进程仍将继续运行。在杀死Process.wait()进程之前,我曾使用monkey等待logcat进程完成,但它并没有杀死它。我没有正确使用fork吗?

感谢。

pid_logcat = fork do
    puts "Enter capturing logcat"
    system("adb shell logcat | tee logcat.log")
end

pid_monkey = fork do
    puts "Running monkey script"
    system("adb shell monkey -p TestApp --throttle 200 -v 1000000 | tee Monkeylog.txt")
end


Process.wait(pid_monkey)
Process.kill("KILL", pid_logcat)

已编辑1

我可以确认adb确实产生了另一个超出ruby控制范围的进程,我现在该怎么办? Process.kill('HUP', -Process.getpgid(pid_logcat))将不起作用,因为这也会杀死父进程(ruby进程分叉)

已编辑2 exec()似乎也不适用于pid_logcat分叉流程。

1 个答案:

答案 0 :(得分:1)

只需在代码后添加Process.wait(pid_logcat)即可。