私はしばらくこの問題に悩まされてきましたが、解決できません。私はサブプロセスを作成していますが、それらのサブプロセスはさらにプロセスを開きます (実際には selenium webdrivers )。webdriver はクラッシュしやすいので、この階層化されたシステムを構築して、メイン プロセスが子を作成し、必要に応じてそれらを強制終了/再作成できるようにしました。
私が直面している問題は、メイン スレッドを実行して Ctrl+C を押すと、すべての子とそれらの子 (ブラウザー) の子が死ぬことです。しかし、((Popen) proc).kill() であるかどうかにかかわらず、これをプログラムで実行しようとすると、SIGINT、SIGTERM を試しました。.terminate、os.kill、os、killpg を試しました。何をしてもセレンプロセスは停止しませんが、Ctrl+C を押した瞬間にすべて停止します。
コード: スレッドの作成方法は次のとおりです。これはどのように問題を引き起こす可能性がありますか?
proc = subprocess.Popen( ["python" , module_path() + "/scraper.py"], stdout=subprocess.PIPE ,stdin=subprocess.PIPE)
私の主な質問は、ターミナルで発生する Ctrl+C 効果を呼び出す方法があるかどうかです。私はもともとスレッドを使用しようとしましたが、デッドロックを維持していました (なぜ、共有メモリも依存関係もなかったのかわかりません)。Python は私のメイン言語ではありません。
ありがとうございました。キーラン