【问题标题】:expect: how to send an EOF to spawnd process期望:如何将 EOF 发送到 spawnd 进程
【发布时间】:2018-04-28 14:38:59
【问题描述】:

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

这个程序等待标准输入端退出。

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

Expect中有close命令,但它也会发送SIGHUP,不能expect程序输出了。

【问题讨论】:

  • 我认为send \x04 可以。这会发送一个 Ctrl+D。

标签: tcl expect


【解决方案1】:

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

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

# Hexadecimal-encoded escape
send \x04
# Octal-encoded escape
send \004
# UNICODE escape (also hexadecimal)
send \u0004
# Generate by a command
send [format "%c" 4]

当 Expect 使用 Tcl 8.6 时,它们都会生成相同的字节码,因此请使用您喜欢的任何一个。

【讨论】:

    猜你喜欢
    • 2017-10-20
    • 2013-07-20
    • 1970-01-01
    • 2021-04-03
    • 2021-06-03
    • 2013-06-19
    • 2015-10-19
    • 1970-01-01
    • 2015-01-04
    相关资源
    最近更新 更多