繁体   English   中英

uv_fs_open:Windows上的标志和模式

[英]uv_fs_open: flags and mode on 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)

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

flags和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_CREAT':未声明的标识符
'S_IRWXU':未声明的标识符

这是预期的结果(因此教程是错误的)?
我该怎么做才能调用uv_fs_open才能在两个平台上运行?
Windows上使用的标志模式的值是什么?

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM