Я разрабатываю приложение на моем малине Pi 3, используя gTTS для Python:
from gtts import gTTS
import os
import threading
def greet_thread(word):
tts_thread = threading.Thread(target = greet, args=[word])
tts_thread.start()
def greet(word):
tts = gTTS(text=word, lang='es')
tts.save("words.mp3")
print 'Reproduciendo audio'
os.system("mpg321 -q presilence.mp3")
os.system("mpg321 -q words.mp3")
Это работает отлично, если я запускаю скрипт python непосредственно из оболочки. Но если я выполняю сценарий python в фоновом режиме, используя:
python -u script.py > log.txt 2>&1 &
Я получаю эту ошибку в моем журнале:
tcgetattr(): Inappropriate ioctl for device
и не знаю почему. Я думаю, так оно и называется из фонового процесса, но не знаю, как его решить. Спасибо за внимание и помощь
Проблема в том, что программа должна быть выполнена с использованием того же пользователя, который выполняет GUI. Поэтому, если вы собираетесь выполнить его в командной оболочке, не используйте пользователя root.
В моем случае мне нужно, чтобы программа запускалась и при запуске. Поэтому я решил это, используя "автоматический старт" вместо crontab
Отредактируйте файл:
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
//ваш скрипт.sh
//или @python script.py
@xscreensaver -no-splash
@Точка-RPI
Сохранить и выйти
перезагружать