私は窓でlibpqを使っているプログラムを持っています。_open_osfhandle(PQsocket(cnxn), 0)
を使ってselect()
と呼ぶことができます。基本ハンドルを閉じずに_open_osfhandleから返されたfdを閉じる
私の問題は、私は_open_osfhandle()
によって返された値に_close()
を呼び出すときに失敗を主張取得のlibpqはPQfinish()
で基本となるソケットをクローズされているにも根底を閉じずに、CRTのファイルディスクリプタをクローズする方法はありますハンドル?
EDIT
私はこれを必要とする理由について512接続した後、_open_osfhandle()
は、あまりにも多くの開いているファイルを言って失敗したので、あります。また、私は_free_osfhnd
を試しました(ビジュアルスタジオが私にアサートのソースを示したときにclose.cppで見つけました)、それでも失敗しました。
'DuplicateHandle'を使用して、' PQsocket'によって返されたハンドルを複製し、その複製を '_open_osfhandle'に渡します。 –
@RaymondChen、ありがとう。私はコードを実行しているが、それが有効かどうかを確認するまでには時間がかかるだろう。私は数分であなたに知らせるでしょう。 –
@レイモンドチェン、それは動作します、ありがとうございました。私はそれを受け入れることができるように答えとしてあなたのコメントを投稿できますか? –