質問

Pythonのサブプロセスモジュールは、デフォルトで、開いているすべてのファイル記述子を、生成するすべての子プロセスに渡します。これは、親プロセスがポートでリッスンしており、強制終了された場合、子がまだその記述子を保持しているため、リスタートして再起動を開始できないことを意味します(SO_REUSEADDRを使用しても)。子プロセスを制御することはできません。

サブプロセスのPOpenコンストラクターは、close_fds引数を受け入れます。この引数は、必要に応じて、子の記述子を閉じます。ただし、stdin / stdoutもオーバーライドされている場合は、Windowsでのみ使用できるという制限があり、これを行う必要があります。

Windowsでこれを回避する方法を知っている人はいますか?

役に立ちましたか?

解決

私が見つけることができる最も関連性の高い情報と思われるもの: SetHandleInformation で参照されていますこの記事は、あなたに指針を与えるべきです。

おそらく、pywin32やctypesを使用して、目的を達成する必要があります。

他のヒント

ウィンドウボックスがないため、これはテストされていませんが、os.dupメソッドとos.dup2メソッドを試してみたいと思います。ファイル記述子を複製し、親記述子の代わりに使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top