1

私は 2 つの定義済み関数を持ってfooいます。barこれらの関数pexpectは、コマンド ラインからスクリプトを呼び出しますpexpect.spawn。次に、pexpect を使用して control-c を送信し、sendcontrol実行close中のスクリプトにシャットダウンを指示し、オブジェクトを終了します。プログラムが実行された後、オブジェクトはまだメモリ内で実行されており、control-c のように見えたり、child.close到達していないように見えますfoo()

スクリプトはスポーンされたオブジェクトを終了する必要がありますが、代わりに私のifロジックはでbar(child)作成されたオブジェクトに影響を与えないようですfoo()

コードは次のとおりです。

def foo():
   child = pexpect.spawn ('./script.sh')
   return child
def bar(child):
   if child.isalive():
      child.sendcontrol('c')
      child.close()
   if child.isalive():
      print 'Child did not exit gracefully.'
   else:
      print 'Child exited gracefully.'
a = foo()
bar(a)

プログラムは常に「子が正常に終了しました」と出力して終了しますが、script.sh実行はバックグラウンドのままになります

このコードはここで機能します:

def bar(child):
   child.sendcontrol('c')

で作成されたオブジェクトと正常にやり取りしますfoo()が、何らかの理由で、ifロジックを使用した他のコードはif正しく実行されますが、オブジェクトには何もしません

4

1 に答える 1

0

私の問題は、.PY ファイルのインデントが 1 文字ずれていたことだと思います

于 2012-12-30T23:42:48.597 に答える