1

Redhat linux

システム時刻を更新するシェルスクリプトである子プロセスを生成しています。以下のように期待して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 に答える