私は頭を悩ませていて、これに対する答えを何時間も探していました。基本的に私がしていることは、他のマシンへのソケットを開き、そこからデータを読み取ることです。このソケットは、ソケットを表す int を渡す fdopen 呼び出しを介してファイル ハンドルに「変換」されます。結果のファイル ハンドルは、ソケット経由で受信したデータを直接解析する bison パーサーに渡されます。これらはすべて Linux で正常に動作します。今、私はこのコードを Windows に移植しようとしましたが、ひどく失敗しました。コードは次のようになります。
FILE* fileHandle;
#if defined WINCE || defined WIN32
int fd = _open_osfhandle(socket, _O_RDONLY);
if (fileHandle = fdopen(fd, "r")) {
#else
if (fileHandle = fdopen(socket, "r")) {
#endif
... // code to call my parser with fileHandle as argument
ファイルハンドルが空のストリーム/ファイルを指しているように見えるため、bison/flex パーサーは Windows バージョンで失敗します。このことを説明したり、代替ソリューションを示唆したりする包括的なリソースを誰かが指摘できますか?
よろしくお願いします、
アンドレ