在NodeJS中,我可以使用spawn().stdout
生成一个进程并听其标准输出。我正在尝试创建一个将与此外壳进行交互的在线终端。我不知道如何将击键发送到Shell进程。
我已经尝试过了:
echo -e "ls\n" > /proc/{bash pid}/fd/0
除了输出ls和换行符之外,这实际上没有做任何其他事情。而且,当我尝试tail -f /proc/{bash pid}/fd/0
时,我什至无法将击键发送到打开的bash
终端。
我真的只是在弄乱试图了解bash
进程将如何解释ENTER键。我不知道这是否通过stdin完成,因为换行符不起作用。
答案 0 :(得分:0)
我认为您无法以任何有意义的方式“遥控”已经开始的常规Bash会话。您可以做的是启动一个新外壳程序,该外壳程序将从named pipe中读取;然后您可以写入该管道以运行命令:
$ cd "$(mktemp --directory)"
$ mkfifo pipe1
$ bash < pipe1 &
$ echo touch foo > pipe1
[1]+ Done bash < pipe1
$ ls
foo pipe1
有关更多详细信息,请参见How to write several times to a fifo without having to reopen it?。