C语言 uv_fs_open: Windows上的标志和模式



从官方文档中我们有以下uv_fs_open的签名:

int uv_fs_open(uv_loop_t* loop, uv_fs_t* req, const char* path, int flags, int mode, uv_fs_cb cb);

据说它等于open(2)

从我在网上找到的最受认可的教程中,我们有这个(强调我的):

标志和mode是标准的Unix标志。libuv负责转换为适当的Windows标志

因此,我认为下面的语句在Linux和Windows上都可以工作:

uv_fs_open(my_loop, my_req,  my_filename, O_RDWR | O_CREAT, S_IRWXU, my_callback);

实际上,它在Linux上运行得很好。
无论如何,在Windows上,我收到以下错误:

'O_RDWR':未声明的标识符
' o_create ':未声明的标识符
'S_IRWXU':未声明的标识符

是预期的结果(因此教程是错误的)?
我应该怎么做才能有一个呼叫uv_fs_open,只是在两个平台上工作?
在Windows上使用的标志模式的值是什么?

要能够在Windows上使用uv_fs_open,用户必须:

  • 显式包含fcntl.h,因为uv-win.h不包含它(详细信息请参阅此问题)

  • 使用_O_CREAT, _O_RDWR_等代替O_CREAT, O_RDWR等(详见官方文档)

也适用于模式,有关可用常量的详细信息可以在链接的文档中找到。

相关内容

  • 没有找到相关文章

最新更新