几个小时以来,我一直在摸不着头脑,一直在寻找答案。基本上我所做的是打开一个到其他机器的套接字并从中读取数据。这个套接字通过 fdopen 调用“转换”为文件句柄,传入代表套接字的 int。然后将生成的文件句柄传递给野牛解析器,该解析器直接解析通过套接字接收的数据。所有这些在 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 版本中失败。任何人都可以指出解释这些东西的综合资源或暗示替代解决方案吗?
谢谢和最好的问候,
安德烈