#!/usr/bin/python3 import os import sys import queue import threading def listen_to_fifo(q): fifo = "/tmp/my_fifo" if not os.path.exists(fifo): os.mkfifo(fifo) with open(fifo, 'r') as f: while True: data = f.readline().strip() if not data: break q.put(data) def read_queue(q): while True: data = q.get() if data == "reboot": # Restart the script print('## RESTARTING SCRIPT') os.execv(sys.executable, [sys.executable] + sys.argv) else: print(data) sys.stdout.flush() q.task_done() if __name__ == '__main__': q = queue.Queue() t1 = threading.Thread(target=listen_to_fifo, args=(q,)) t2 = threading.Thread(target=read_queue, args=(q,)) t1.start() t2.start() q.join()