Winsock套接字不能用 _open_osfhandle()函数映射为一个流文件

 
Winsock套接字不能用 _open_osfhandle()函数映射为一个流文件
       _open_osfhandle()函数在windows下可以将一个win32打开的文件句柄映射成为一个普通的C库里面的流文件接口,参见下例:
void OSFileToCRTFile()
       {
              HANDLE hFile = CreateFile("c://test.dat", GENERIC_READ | GENERIC_WRITE, 0, NULL,
              OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 
              char szText[] = "Hello world!/n";
              DWORD dwWritten;
              WriteFile(hFile, szText, strlen(szText), &dwWritten, NULL);
 
              FILE* pFile = NULL;
              int nHandle = _open_osfhandle((long)hFile, _O_TEXT | _O_APPEND);
              if (nHandle != -1)
              pFile = _fdopen(nHandle, "wt");
 
              if(pFile)
              {
                     int n = fputs("write by FILE*!", pFile);
                     fflush(pFile);// 立即写入文件
                     // n == 0
              }
 
              CloseHandle(hFile);
       }
在Linux下可以不必用这个函数,Linux的世界里都是文件,但是在windows下对套接字winsock却不可以这样映射,已经试验验证过了。
 

你可能感兴趣的:(c,linux,windows,File,null)