我正在尝试使用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
分叉流程。
答案 0 :(得分:1)
只需在代码后添加Process.wait(pid_logcat)
即可。