uv_fs_open:Windows

时间:2016-11-05 09:52:32

标签: c linux windows libuv fcntl

official documentation我们有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)

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

  

标志和模式是标准的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_CREAT':未声明的标识符
  'S_IRWXU':未声明的标识符

这是预期的结果(因此教程是错误的)? 我该怎么做才能打电话给uv_fs_open这两个平台上都有效? 在Windows上使用标志模式的值是什么?

1 个答案:

答案 0 :(得分:0)

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

  • 明确包含fcntl.h,因为uv-win.h不包括{this问题以获取更多详情)

  • 使用_O_CREAT_O_RDWR_等代替O_CREATO_RDWR和其他人(有关详细信息,请参阅官方documentation

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