如何发送ctrl+;Expect/Tcl中的d?

如何发送ctrl+;Expect/Tcl中的d?,tcl,expect,Tcl,Expect,发送foo\r(未触发ctrl+d)后,以下内容将挂起 编辑:以某种方式,将\x04替换为\x04\x04是可行的。不确定为什么控件字符必须发送两次 expect { -re {Type foo and press enter, then ctrl\+d} { send "foo\r\x04" } } 你为什么要删除你的答案?@glennjackman我的印象是我的答案有效,但经过更多的调试后,我发现它没有。。。所以我更新了这个问题,希望有人能帮上忙。它应该

发送
foo\r
(未触发
ctrl+d
)后,以下内容将挂起

编辑:以某种方式,将
\x04
替换为
\x04\x04
是可行的。不确定为什么控件字符必须发送两次

expect {
  -re {Type foo and press enter, then ctrl\+d} {
    send "foo\r\x04"
  }
}

你为什么要删除你的答案?@glennjackman我的印象是我的答案有效,但经过更多的调试后,我发现它没有。。。所以我更新了这个问题,希望有人能帮上忙。它应该有用。也许您生成的应用程序正在执行类似ioctl的操作,以从规范输入或刷新输入更改tty模式。尝试
发送“foo\r”;睡眠1;发送“\x04”
进行检查。@meuh有趣!使用
sleep 1
有效。