将按键发送到后台应用程序

时间:2011-03-21 03:46:28

标签: linux command-line send

如果我有一个命令行程序作为后台运行的线程(带有./program&的AKA)执行,它与命令行交互,我该如何向它发送命令?有没有办法(例如,使用'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.

ps -e | grep testprogram显示它仍在运行,但现在永远不能在'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 :(得分:0)

您可以使用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)作业然后在shell提示符下键入bg将后台作业放回后台。