1

我正在尝试使用 Ruby 编写脚本以在 Android 应用程序上运行猴子测试。我坚持使用 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))不会工作,因为这也会杀死父进程(红宝石进程分叉这个)

EDITED 2 exec()似乎也不适用于pid_logcat分叉进程。

4

1 回答 1

2

只需Process.wait(pid_logcat)在您的代码后添加。

于 2013-02-16T00:14:36.280 回答