Как запустить голый X-сервер (X -retro &) в ОС Linux с использованием скрипта Python? - PullRequest
0 голосов
/ 30 мая 2019

Я новичок и пытаюсь автоматизировать Linux-тестирование на Python. Пожалуйста, помогите мне.

Это то, что я пробовал. Но это не работает. Нет ошибок, но на дисплее отображается пустой черный экран.

subprocess.Popen(['pkill', 'X'])
time.sleep(5)
subprocess.Popen(['X', '-retro', '&']).communicate()
subprocess.Popen(['export', 'DISPLAY=:0']).communicate()
subprocess.Popen(['openbox', '--replace', '&']).communicate()

1 Ответ

0 голосов
/ 30 мая 2019

export не будет иметь никакого эффекта, поскольку каждая команда оценивается в отдельной оболочке, если требуется оболочка, в противном случае будут задействованы только fork и exec. Передайте переменные окружения через аргумент словаря.

Связь будет ждать, пока программа не выйдет. Кроме того, & не имеет смысла, так как Попен не ждет завершения программы, и нет никакого смысла в фоновом режиме задания, которое не является оболочкой, и не имеет понятия или статуса такого различия.

subprocess.Popen(['pkill', 'X'])
time.sleep(5)
subprocess.Popen(['X', '-retro'])
import sys
env = dict(sys.environ)
env['DISPLAY']=':0'
subprocess.Popen(['openbox', '--replace'], env=env)

Если есть проблема с этим, то это связано с задействованными командами, а не с кодом Python.

...