Как сделать так, чтобы выход программы, запущенной на одном терминале, был входом другого терминала? - PullRequest
0 голосов
/ 20 сентября 2018

ПРИМЕЧАНИЕ: проблема основана на программе с графическим интерфейсом, поэтому обычный канал не будет работать, мне нужно, чтобы обе программы работали.

Подготовка: в Redhat или Ubuntu, два терминала gnome открыты, терминал A являетсязапуск скриптовой программы, которая может генерировать некоторые строковые данные;на терминале B запущена другая программа, которая ожидает ввода пользователя.

Цель: сделать так, чтобы выход терминала A / программы автоматически вводился на терминале B.

Основная проблема заключается в том, чтопрограмма, запущенная в терминале B, находится вне моего контроля, она может принимать только определенные пользовательские вводы через клавиатуру, я не могу набрать любую другую команду pipe во время ее запуска.Кроме того, программе B требуется некоторое время для обработки команды, переданной из программы A, поэтому, если у меня есть более одной команды, мне нужно сохранить обе программы RUNNING, но не как обычный канал: генерировать серию команд и завершать себя, все команды будутбыть переданным B одновременно, B получить ввод и ответ.Если все команды приходят одновременно, B может ответить только на первую и проигнорировать остальные.

До сих пор мне нужно скопировать первый вывод программы и вставить его в терминал B, есть ли какой-нибудь умныйспособ сделать связь двух терминалов и сделать эту операцию автоматически?

problem diagram

1 Ответ

0 голосов
/ 20 сентября 2018

С одной стороны, я рекомендую изменить способ подключения этих терминалов.

Или, вы можете попробовать /dev/tty файл.

/ dev / tty - это специальный файл, представляющий терминал для текущего процесса.Поэтому, когда вы откроете 1> / dev / tty, ваше сообщение ('1') появится на вашем экране.Аналогично, когда вы cat / dev / tty, ваш последующий ввод дублируется (пока вы не нажмете Ctrl-C).

/ dev / tty не «содержит» ничего как таковое, но вы можете прочитать из негои напиши ему (для чего это стоит).Я не могу придумать, как его использовать, но есть похожие файлы, которые очень полезны для простых операций ввода-вывода (например, / dev / ttyS0 обычно ваш последовательный порт)

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

...