需要打开telnet,发送一些命令,然后从pocketsphinx发送stdout。
目前预计将等到程序完成后再将所有内容输出到telnet进程。 我需要pocketphix来持续提供产生的telnet进程。
这是我到目前为止所做的:
#!/usr/bin/expect -d
set send_human {.1 .3 1 .05 2}
spawn telnet 192.168.1.104 23
expect “*”
send "\x01"; send "2\r"
expect “:”
send -h "hello world\r"
send -h "goodbye world\r"
send -h "Test Test Test\r"
send -- [exec pocketsphinx_continuous -infile speech.wav 2> /dev/null ]\n
答案 0 :(得分:1)
您可以使用expect命令interact
将两个衍生进程连接在一起。
默认情况下,
interact
期望用户编写stdin并读取Expect进程的stdout 本身。 -u标志(用于“user”)使交互查找用户作为其参数命名的进程 (必须是衍生的ID)。这允许在不使用显式循环的情况下将两个不相关的进程连接在一起。为了帮助 调试,Expect诊断总是转到stderr(或某些日志和调试信息的stdout)。 出于同样的原因,interpreter命令将从stdin交互式读取。
例如
set send_human {.1 .3 1 .05 2}
spawn telnet 192.168.1.104 23
expect “*”
send "\x01"; send "2\r"
expect “:”
send -h "hello world\r"
send -h "goodbye world\r"
send -h "Test Test Test\r"
set sid_telnet $spawn_id
spawn pocketsphinx_continuous -infile speech.wav 2> /dev/null
interact -u $sid_telnet