1

1 つのスクリプトが subprocess.Popen を呼び出して端末コマンドを実行し、2 つ目のスクリプトを実行する 2 つのスクリプトを作成しました。5 秒待った後、サブプロセスを終了します。

サブプロセスでは、レジスタをポーリングし、そのレジスタの内容をファイルに書き込む while ループがあります。

私が使用している方法は

f = open(filename, 'w')
...
while 1:
    *poll register*
    f.write(fp0)
    sleep(1)

while ループ スタンドアローンでスクリプトを実行すると、レジスタの内容がファイルに書き込まれます。しかし、メインスクリプトを実行し、ポーリングスクリプトをサブプロセスとして実行すると、終了後にファイルに書き込みません。

誰でも問題に提案を提供できますか?

4

2 に答える 2

1

ファイルを開くときにコンテキストを使用し、寝る直前にフラッシュを追加します。

with open(filename, 'w') as f:
    ...
    while 1:
        *poll register*
        f.write(fp0)
        f.flush()
        sleep(1)
于 2012-06-20T20:56:24.567 に答える
0

サブプロセスを終了しているため、出力がファイルにフラッシュされていない可能性があります。呼び出しf.flush()て、出力がファイルに書き込まれていることを確認してください。

于 2012-06-20T20:54:31.037 に答える