イベントが発生したときにコードを起動するためにハイパーバイザーにロード/アンロードされるスクリプト(私が働く会社)の作業をしています。実際にスクリプトをアンロードする唯一の方法は、Ctrl - Cです。私は、プロセスを自動化するPythonの関数を書いています。Linuxで作業中にPythonでCtrl-Cキーボード割り込みをシミュレートする
"done"
という文字列がプログラムの出力に現れたら、vprobe
を殺すはずです。あなたが見ることができるように
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
ファイル記述子で出力を書いています:私は、コマンドを実行するためにsubprocess.Popen
を使用してい 。私は最後の行をチェックする。もしそれが'done'
なら、私はそれを殺す。残念ながら、CTRL_C_EVENT
はWindowsでのみ有効です。 Linuxで何ができますか?
:定数文字列を 're.search'は良くないlineListに「行って」ながら'のように表すことができます。 [-1]:... ' – nneonneo
うん、あなたは正しい。ありがとう。こんにちはアンドリュー。 –