イベントが発生したときにコードの一部を起動するためにハイパーバイザーにロード/アンロードされるいくつかのスクリプト(私が働いている会社で)に取り組んでいます。スクリプトを実際にアンロードする唯一の方法は、Ctrl-を押すことCです。プロセスを自動化する関数をPythonで書いています
"done"
プログラムの出力に文字列が表示されるとすぐに、を強制終了する必要がありvprobe
ます。私はsubprocess.Popen
コマンドを実行するために使用しています:
lineList = buff.readlines()
cmd = "vprobe /vprobe/myhello.emt"
p = subprocess.Popen(args = cmd, shell=True,stdout = buff, universal_newlines = True,preexec_fn=os.setsid)
while not re.search("done",lineList[-1]):
print "waiting"
os.kill(p.pid,signal.CTRL_C_EVENT)
ご覧のとおりbuff
、読み取り+書き込みモードで開いたファイル記述子に出力を書き込んでいます。最後の行を確認します。もしあれば'done'
、私はそれを殺します。残念ながら、これCTRL_C_EVENT
はWindowsでのみ有効です。Linuxで何ができますか?