Ruby exucution застрял в строке system () - PullRequest
0 голосов
/ 06 июня 2018

Это мой фрагмент кода

def execution_start
  puts "About to start"
  system("appium")
  puts "Done!!"
end

При выполнении этого я вижу вывод About to start, и запускается сервер appium.Но после этого я не вижу ничего происходящего.Это застряло навсегда.Есть идеи?

1 Ответ

0 голосов
/ 06 июня 2018

system блокируется до тех пор, пока не будет выполнена команда, которую он выполняет.Для запуска команды и немедленного возврата используйте Process#spawn:

def execution_start
  puts "About to start"
  pid = Process.spawn("appium")
  puts "Done!!"
end

. Затем можно использовать возвращенный идентификатор процесса, чтобы отслеживать, завершился ли процесс и с каким кодом выхода,позже в вашей программе.

(Обратите внимание, что в соответствии с документацией вам необходимо в конечном итоге Process#wait PID или, по крайней мере, зарегистрировать незаинтересованность, используя Process#detach для предотвращения превращения подпроцесса в зомби.)

...