expect:如何向spawnd进程发送EOF

时间:2017-11-15 11:29:40

标签: tcl expect

我有一个从stdin读取的程序并处理它。 (如“tee / some / file”)

此程序等待stdin结束退出。

如果我从Expect生成它,在send多个内容之后,如何向程序发送“EOF”?

在Expect中有一个close命令,但它也会发送一个SIGHUP,并且不能再expect个程序输出。

1 个答案:

答案 0 :(得分:2)

Expect通过使用生成的程序在其中运行的虚拟终端(在非Windows上)工作。这意味着您可以通过发送字符序列来模拟键来完成任务。特别是EOF control sequence is done with Ctrl+D,它变成了字符U + 000004。终端处理它以将其变成真正的EOF。

有几种方法可以编写它,具体取决于您喜欢哪种转义序列,但其中一种方法可行:

csscript.exe
# Hexadecimal-encoded escape
send \x04
# Octal-encoded escape
send \004
# UNICODE escape (also hexadecimal)
send \u0004

当Expect使用Tcl 8.6时,这些都会生成相同的字节码,因此请根据您的喜好使用。