今日、このコードは私が望んでいたように機能しました。今はそうではありません。airodump を実行し、出力を csv ファイルに保存したい (コマンド ライン オプション)。数秒後、プロセスを強制終了します。
def find_networks():
airodump = subprocess.Popen(["airodump-ng","-w","airo","--output-format","csv","mon0"],stdout=subprocess.PIPE, stderr=subprocess.PIPE)
time.sleep(10)
try:
os.kill(airodump.pid, signal.SIGTERM)
if not airodump.poll():
print "shouldn't have had to do this.."
airodump.kill()
if not airodump.poll():
print "shouldn't have had to do this....."
airodump.terminate()
if not airodump.poll():
print "shouldn't have had to do this........"
except OSError:
print "?"
pass
except UnboundLocalError:
print "??"
pass
return_code = airodump.wait()
print return_code
(ここでの出力は次のとおりです。これを行う必要はありません..これを行う必要はありません..... -9)
以前は、私が言ったことを正確に実行します (同じコード)。負の 9 は気になるものです。以前は 1 を取得していましたが、プロセスはまだ終了しています。しかし、それは大きな問題ではありません。必要なのはその .csv ファイルだけです。この実装では、csv ファイルは完全に空です。作成されますが、何も挿入されません。stdout を PIPE に設定せずにサブプロセスを実行すると、csv ファイルが作成されて入力されますが、そのようにすることはできません。
stdout=subprocess.PIPE により、データが PIPE ランドの存在しない csv ファイルに「書き込まれる」ことはありますか?