Отправить нажатия клавиш в фоновое приложение - PullRequest
0 голосов
/ 21 марта 2011

Если у меня есть программа командной строки, выполняемая как фоновый поток (AKA с ./program &), который взаимодействует с командной строкой, как я могу отправлять ей команды? Есть ли способ (скажем, с использованием 'pipe') отправлять символы, как если бы они вводились в командной строке?

Пример упрощенной командной строки:

Без & (обычный случай):

~/home/temp> ./testprogram

~/home/temp> Welcome to Testprogram. Enter command:

~/home/temp> Welcome to Testprogram. Enter command: quit

~/home/temp> Goodbye!

С & (мой случай!):

~/home/temp> ./testprogram &

~/home/temp> Welcome to Testprogram. Enter command:

~/home/temp> quit

~/home/temp> Command not found.

A ps -e | Тестовая программа grep показывает, что он все еще работает, но теперь никогда не может завершиться вне команды kill.

То, что было бы идеально, это что-то вроде следующего:

~/home/temp> ./testprogram &

~/home/temp> Welcome to Testprogram. Enter command:

~/home/temp> quit

~/home/temp> Command not found.

~/home/temp> quit | /cat/proc/testprogram

~/home/temp> Goodbye!

Как именно мне это сделать?

1 Ответ

0 голосов
/ 18 августа 2011

Вы можете вернуть программу, используя fg:

~/home/temp> ./testprogram &
Welcome to Testprogram. Enter command:
~/home/temp> ls /tmp  # do whatever else you want to do on the shell
# ... later
~/home/temp> jobs     # what was running?
[1]+  Running                 ./testprogram &
~/home/temp> fg       # Brings testprogram to foreground, does not re-prompt
quit
Goodbye!
~/home/temp>

Если у вас есть более одного фонового задания, вы можете выбрать, какое из них будет на переднем плане, используя "fg% 1" "fg% 2" ...

Примечание: вы можете вернуть фоновое задание обратно в фоновый режим, остановив (Ctrl-z) задание, а затем набрав bg в командной строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...