Убить дочерний процесс 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 раздвоенный процесс.

1 ответ

Решение

Просто добавь Process.wait(pid_logcat) после вашего кода.

Другие вопросы по тегам