Убить дочерний процесс Ruby после завершения другого дочернего процесса Ruby
Я пытаюсь использовать 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))
не будет работать, потому что это также убьет родительский процесс (процесс ruby разветвляет это)
Отредактированный 2exec()
также не похоже на работу pid_logcat
раздвоенный процесс.