나는 머리를 긁적이고 몇 시간 동안 이것에 대한 답변을 찾고 있습니다. 기본적으로 내가하는 일은 다른 머신에 소켓을 열고 소켓에서 데이터를 읽는 것입니다. 이 소켓은 소켓을 나타내는 int를 전달하는 fdopen 호출을 통해 파일 핸들로 "변환"됩니다. 그런 다음 결과 파일 핸들은 소켓을 통해 수신 된 데이터를 직접 파싱 한 bison 파서로 전달됩니다. 이 모든 것은 Linux에서 잘 작동합니다. 이제이 코드를 Windows에 이식하려고 시도했지만 실패로 돌아갑니다. 파일 핸들이 빈 스트림/파일을 가리 키도록 보이기 때문에winsock 소켓을 파일 핸들
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
들소/플렉스 파서가 윈도우 버전에서 실패 코드는 다음과 같이 보입니다. 아무도이 자료를 설명하거나 대체 솔루션에 대한 힌트를 제공하는 포괄적 인 리소스를 가리킬 수 있습니까?
감사와 안부, 윈도우에서
앙드레
소켓에 의한 파일 기술자 수익을() nSocketFd. 일부 래퍼를 만들거나 피하기 위해 flex/bison 생성 코드 중 일부를 재정의하지 않으면 윈도우 내부의 특정 함수를 호출 할 수 없습니다. –
그럼 너는 운이 없어. 뭔가를 다시 써야합니다. Windows의 소켓 핸들에서는 C 파일 I/O 함수를 사용할 수 없습니다. –
Yepp도 내 결론입니다. 이 부분을 다시 작성해야합니다. –