是否有来自* nix unistd.h的任何Windows端口的write()系统调用?

时间:2010-12-09 13:58:50

标签: unix visual-studio-2005

我有一个早期为Linux环境构建的大代码,它涉及从unistd.h调用write()。是否有任何可用于Win32环境的write()调用端口。我希望在Windows环境(MS-VS 2005环境)上构建这个大型代码库,如果可能的话,不要触及代码。

更改代码以用fwrite()替换write()调用将是繁琐的手动过程,因为两者的签名是不同的。

EDITED:实际上许多其他基于unix的调用也在Windows环境中失败 - read(),open(),close()......

任何指针都很有用。

谢谢。

-AD

2 个答案:

答案 0 :(得分:1)

Microsoft的C运行时具有_open _read _write等“low-level I/O”。但是,这些是由C运行时层管理的兼容性包装器 mangled ,受“受_getmaxstdiocan't go higher than 2048限制”等限制。

您可以将NT原生CreateFile ReadFile WriteFile用于真正的低级I / O.

答案 1 :(得分:0)

如果它们不起作用我会有点惊讶,但如果它们不工作,最好的办法是编写一个使用Win32API调用实现它们的移植层库。

这无疑会比搜索和替换大量代码更快,也意味着您的主代码库保持不变且可移植。