Запуск сценария Python в фоновом режиме - Raspbian
Недавно я сконструировал небольшую роботизированную машину, используя мой Raspberry Pi 3 с распбианским натяжением. В настоящее время я нахожусь в точке, где я могу водить машину с помощью контроллера xbox360, подключенного к порту USB pi. Моя проблема заключается в том, что мне не нравится, когда я запускаю сценарий, написанный мной, чтобы использовать робота (robot.py).
Что я хотел бы сделать, так это запустить скрипт в фоновом режиме, который работает примерно так:
#while true
#if joystick is detected
#robotoffflag=true
#if startup button is pressed on the joystick && robotoffflag
#robotoffflag=false
#run robot.py to control the robot
#robot.py already has controls for shutting down the robot
#which disables the motors and sets robotoffflag to true
Таким образом, если мой пи включен, я могу в любой момент просто нажать кнопку на моем контроллере и начать использовать робот. Затем, когда я закончу, нажмите другую кнопку на контроллере, чтобы отключить робота.
У меня вопрос, правильно ли я поступаю? Мне кажется глупым запускать скрипт в фоновом режиме, представляющий собой бесконечный цикл с условными выражениями внутри. Было бы лучше иметь что-то более управляемое событиями?
1 ответ
Вот что я мог бы сделать, подумал немного взломать. Поместите код Python в цикл, добавив очень короткий сон в конце каждого цикла, чтобы ограничить использование процессора. Затем запустите скрипт python внутри сессии tmux, конечно, отсоединенной. Затем скрипт python будет работать до тех пор, пока сеанс tmux не будет уничтожен, даже если ваш сеанс ssh завершится. Кстати, tmux - всего лишь примерная утилита. Есть и другие. Конечно, вы можете придумать и реализовать цикл в механизме "сигнал и ожидание", который будет ожидать сигнала от вашего контроллера, а затем запускать его от демона операционной системы. Зависит от того, как глубоко вы хотите зайти...