Ich habe ein Python-Skript, dessen Ausgabe Pipe in eine Protokolldatei ist. Ich kann die Datei von innen mit einem Aufruf von os.exec neu starten, aber wenn ich das tue, schreibt der neue Prozess seine Ausgabe nicht in der Protokolldatei. Wie kann ich die Ausgabeumleitung beibehalten, nachdem ich den Prozess neu gestartet habe?Umleiten der Ausgabe in Datei nach os.exec *
Mein Skript Start:
python3.6 script.py >> home/pi/log/telegram_bot.log 2>&1 &
Meine Neustart Linie:
import os
import sys
os.execv(sys.executable, [sys.executable] + sys.argv)
Warum verwenden Sie os.execv und nicht Subprozess? – Alan
@Alan sie dienen verschiedenen Zwecken: Subprozess spawns einen Kind-Prozess (so dass Sie w/zwei) und exec wandelt den aktuellen Prozess in den neuen Prozess. @Nexxurs, ich glaube nicht, dass die [exec * '] (https://docs.python.org/3.6/library/os.html#process-management) -Familie eine Schnittstelle zum Umleiten von Streams bietet. Aber warum sollten Sie Ihren Prozess ausführen, anstatt nur Ihre Hauptfunktion erneut aufzurufen? – Will
Dies wird [hier] beantwortet (https://stackoverflow.com/questions/8500047/how-to-inherit-stdin-and-stdout-in-python-by-using-os-execv) – user2722968