Использование подпроцесса Python для вывода вывода в новом окне Xterm

Я пытаюсь вывести различную информацию в двух терминалах из того же сценария Python (как этот парень ). То, как мои исследования, похоже, указывают на то, чтобы открыть новое окно xterm, используя subprocess.Popen и запустить cat, чтобы отобразить stdin терминала в окне. Затем я напишу необходимую информацию в stdin подпроцесса следующим образом:

from subprocess import Popen, PIPE terminal = Popen(['xterm', '-e', 'cat'], stdin=PIPE) #Or cat > /dev/null terminal.stdin.write("Information".encode()) 

Затем строка «Информация» будет отображаться в новом xterm. Однако, это не так. Xterm ничего не отображает, и метод stdin.write просто возвращает длину строки, а затем переходит. Я не уверен, что есть неправильное понимание того, как работают подпроцессы и трубы, но если кто-то может мне помочь, это будет очень признательно. Благодарю.

Это не работает, потому что вы передаете материал самому xterm , а не программе, запущенной внутри xterm . Рассмотрим использование именованных каналов:

 import os from subprocess import Popen, PIPE import time PIPE_PATH = "/tmp/my_pipe" if not os.path.exists(PIPE_PATH): os.mkfifo(PIPE_PATH) Popen(['xterm', '-e', 'tail -f %s' % PIPE_PATH]) for _ in range(5): with open(PIPE_PATH, "w") as p: p.write("Hello world!\n") time.sleep(1)