使用不同的标志设置打开文件失败(-1)
open file fail(-1) with different flag settings
我有一个关于在本机中使用带有不同标志的 open() 的问题 android。
因为我想打开一个文件并忽略缓存和缓冲区,以便直接访问硬件(SD 卡)。
如果标志设置是
O_CREAT | O_RDWR | O_NDELAY, S_IRUSR | S_IWUSR| O_DIRECT | O_SYNC
.我可以得到一个肯定的文件描述符(fd)。
但是如果我将设置更改为
O_CREAT | O_RDWR | S_IRUSR | S_IWUSR| O_DIRECT | O_SYNC
结果是 fail(-1).
If the flag setting is O_CREAT | O_RDWR | O_NDELAY, S_IRUSR | S_IWUSR| O_DIRECT | O_SYNC . I can got a positive file descriptor(fd).
这种形式的用法不太正确
int open(const char *pathname, int flags, mode_t mode);
But if I change the setting to O_CREAT | O_RDWR | S_IRUSR | S_IWUSR| O_DIRECT | O_SYNC the result is fail(-1).
你所说的 "setting" 是 flags 和 mode[=27= 的无效混合] 符号。此外,由于 O_CREAT 已在 flags 中指定,因此必须提供 mode 参数,但事实并非如此。
尝试将 模式 与 标志 分开:
open(pathname, O_CREAT | O_RDWR | O_DIRECT | O_SYNC, S_IRUSR | S_IWUSR);
我有一个关于在本机中使用带有不同标志的 open() 的问题 android。
因为我想打开一个文件并忽略缓存和缓冲区,以便直接访问硬件(SD 卡)。
如果标志设置是
O_CREAT | O_RDWR | O_NDELAY, S_IRUSR | S_IWUSR| O_DIRECT | O_SYNC
.我可以得到一个肯定的文件描述符(fd)。
但是如果我将设置更改为
O_CREAT | O_RDWR | S_IRUSR | S_IWUSR| O_DIRECT | O_SYNC
结果是 fail(-1).
If the flag setting is O_CREAT | O_RDWR | O_NDELAY, S_IRUSR | S_IWUSR| O_DIRECT | O_SYNC . I can got a positive file descriptor(fd).
这种形式的用法不太正确
int open(const char *pathname, int flags, mode_t mode);
But if I change the setting to O_CREAT | O_RDWR | S_IRUSR | S_IWUSR| O_DIRECT | O_SYNC the result is fail(-1).
你所说的 "setting" 是 flags 和 mode[=27= 的无效混合] 符号。此外,由于 O_CREAT 已在 flags 中指定,因此必须提供 mode 参数,但事实并非如此。
尝试将 模式 与 标志 分开:
open(pathname, O_CREAT | O_RDWR | O_DIRECT | O_SYNC, S_IRUSR | S_IWUSR);