Pythonのサブプロセスモジュールは、デフォルトで、開いているすべてのファイル記述子を、生成する子プロセスに渡します。これは、親プロセスがポートでリッスンしていて強制終了された場合、子がまだその記述子を所有しているため、再起動してリッスンを再開できないことを意味します(SO_REUSEADDRを使用している場合でも)。私は子プロセスを制御できません。
サブプロセスのPOpenコンストラクターはclose_fds引数を受け入れます。これにより、必要に応じて、子の記述子が閉じられます。ただし、Windowsでのみ、stdin / stdoutもオーバーライドされた場合に使用できないという制限があります。これは、私が行う必要があります。
Windowsでのこの回避策を知っている人はいますか?