红帽Linux
我产生一个子进程,它是一个更新系统时间的shell脚本。我的超时时间是30分钟,如下所示。我的子进程与其他命令一起将系统时间提前了4个小时。当我执行以下这些行时,我得到的结果是1。
child = pexpect.spawn('/bin/bash',['-c',options.cmd])
result = child.expect([pexpect.EOF,pexpect.TIMEOUT],timeout=cmd_timeout)
我怎样才能期望使用真正的计时器超时?
最佳答案
pexpect使用受系统时钟更改影响的time.time()。更好的替代方法可能是Python 3.3中的time.monotonic()(请参见its analog on older versions)。如果可用,则由子流程模块使用。
您可以implement timeout using a while loop with your time() function, using signal.alarm(), etc。
关于python - 如果子进程更改了系统时间,则pexpect错误地超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12962291/