Хорошо, это будет сложно. Как комментирует Пабло Санта-Крус, ваш сценарий запускает в пределах сеанса экрана, поэтому обычный интерфейс stdin / stdout / stderr с миром не будет работать, так как экран не слушает Ctrl-A на любой из этих ручек.
Но еще не все потеряно. Экран - это , прослушивание Ctrl-A на , это stdin, то есть, как клавиша Ctrl-A вашей клавиатуры достигает вас. (Ниже предполагается, что Linux, но я почти уверен, что другие Unices имеют что-то похожее ...) Во-первых, вашему сценарию необходимо выяснить pid своего родительского сеанса экрана (библиотека psutil может помочь) ,
Затем вы обнаружите, что каталог /proc/{pid}/fd
содержит файлы, соответствующие filenos всех файловых дескрипторов, открытых этим процессом. Для обычных процессов Unix '0' - это стандартный вывод, '1' - это стандартный вывод, '2' - это stderr. При условии правильных разрешений пользователя ваш скрипт должен открывать /proc/{pid}/fd/0
и записывать в файл Ctrl-A, имитируя нажатие клавиши пользователем.
Я не совсем уверен, будет ли это работать , никогда раньше не пробовал, но если вам придется управлять экраном из подпроцесса, какой-то вариант этого, вероятно, будет вашим лучшим выбором.