3

Pythonスクリプトからbashスクリプトを一時停止したいのですが、手順は次のようになります。

  1. python script reader.py から script writer.sh を起動します。

  2. writer.sh が 3 行目を出力したら、このスクリプトの実行を .ini のコマンドを使用して一時停止しreader.pyます。

  3. で何らかのコマンドを使用して writer.sh の実行を再開したいと考えていreader.pyます。

これらの 2 つのスクリプトは次のとおりです。問題は、writer.shsleep コマンドが で実行されたときに一時停止しないことreader.pyです。writer.shだから私の質問は、文字列「3番目」を出力するときにどのように一時停止できますか? 正確に言うと (これは私の仕事での実際の問題です)の出力の読み取りwriter.shを停止したため、停止したいと思います。reader.pywriter.sh

reader.py:

import subprocess
from time import sleep

print 'One line at a time:'
proc = subprocess.Popen('./writer.sh', 
                        shell=False,
                        stdout=subprocess.PIPE,
                        )
try:                        
    for i in range(4):
        output = proc.stdout.readline()
        print output.rstrip()
        if i == 2:
            print "sleeping"
            sleep(200000000000000)
except KeyboardInterrupt:
    remainder = proc.communicate()[0]
    print "remainder:"
    print remainder

writer.sh:

#!/bin/sh

echo first;
echo second;
echo third;
echo fourth;
echo fith;

touch end_file;

関連する質問は、script1 がテキスト行を出力する場合、Linux でパイプを使用するscript1 | script2と script1 が一時停止しますか?

4

1 に答える 1

1

bash スクリプトを一時停止SIGSTOPするには、信号をPID.

再開したい場合は、信号を送信できますSIGCONT

でサブプロセスの pid を取得できますpid = proc.pid

見るman 7 signal

于 2012-10-18T13:56:24.010 に答える