1

红帽Linux

我正在生成一个子进程,它是一个更新系统时间的 shell 脚本。我的超时时间为 30 分钟,如下所示。我的子进程与其他命令一起将系统时间提前 4 小时更新。当我执行以下这些行时,我得到的结果为 1。

child = pexpect.spawn('/bin/bash',['-c',options.cmd])

result = child.expect([pexpect.EOF,pexpect.TIMEOUT],timeout=cmd_timeout)

如何让 pexpect 使用真正的计时器超时?

4

1 回答 1

1

pexpect 使用受系统时钟更改影响的 time.time()。更好的选择可能是 Python 3.3 中的 time.monotonic() (参见旧版本的类似物)。如果可用,它由子流程模块使用。

您可以使用带有 time() 函数的 while 循环、使用 signal.alarm() 等来实现超时

于 2012-10-18T23:11:53.040 回答