7

重複の可能性:
select()はWindowsのPythonのファイルで使用できますか?

UNIXでは、Pythonで渡すことができsys.stdinます。select.select私はこれをWindowsで行おうとしていますがselect.select、PythononWindowsでは許可されません。

私が行っていることをより正確に説明するには、https://github.com/eldarion/gondor-client/blob/ccbbf9d4b61ecbc2f66f510b993eb5fba0d81c09/gondor/run.pyを参照してください。

このunix_run_poll機能は、私がWindowsで実現しようとしていることです。基本的な考え方は、ストリーミングstdin、stdout、stderrをリモートで実行されているプロセスに接続しているサーバーにソケット接続し、ローカルクライアントからそれを操作して、ローカルクライアントが実行しているように見せることです。処理する。

これwin32_run_pollは、Windowsに移植するための私の試みであり、機能します。それは少し不安定で、アプローチ、IMOは非常に悪いです。

これをどのように改善できるかについて誰かが提案を持っていますか?win32apiへの依存は理想的とは言えませんが、それを維持しても問題ありません。

4

1 に答える 1

7

Windows ではselect、ソケットに対してのみ定義されており、任意のファイル ハンドルに対しては機能しません (Windows にはファイル記述子の概念がありません)。この問題の詳細については、msdn のドキュメントを参照してください。select モジュールのpython ドキュメントにも記載されています。

任意のファイルに対してポーリングを使用する場合は、ポーリング ソケットとファイル ハンドルを抽象化するものを調べる必要があります。これは、投稿へのコメントで参照されているツイスト リアクターである場合もあれば、libuvへの python バインディング、または選択したその他のイベント ライブラリである場合もあります。

于 2012-09-19T18:26:48.527 に答える