如果我有一个命令行程序作为后台运行的线程(带有./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!
我该怎么做?
答案 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将后台作业放回后台。