- 主题:nonblocking open有没有啥思路?
io_uring有一个操作是IOURING_OP_OPENAT
【 在 deadlylight 的大作中提到: 】
: 一般的nonblocking都是先获得fd,然后对这个fd做nonblocking的read/write。
: 但是对于regular file来说,fd = open(path...)本身也是要读磁盘的,"open"自己就不是nonblocking。
: 有没有其他的系统调用可以取代open来做nonblocking?
: ....................
- 来自「最水木 for iPhone12,8」
--
FROM 75.31.75.*
好奇问一下为什么之后读写不怕阻塞,反而担心open?
【 在 deadlylight 的大作中提到: 】
: 这个看起来是可以的,不过要很新的kernel才支持,目前还用不上。
:
: 【 在 lambdai 的大作中提到: 】
: ....................
- 来自「最水木 for iPhone12,8」
--
FROM 107.77.211.*
好吧我突然脑子抽筋了。
那read/write前怎么大概知道会有数据呢?
【 在 hgoldfish 的大作中提到: 】
: 因为楼主说了。read/write 都有非阻塞接口可用。而 open() 没有。
:
: 这确实是个大问题。因为在云服务器上面,有非常大的可能性文件系统可能是通过 nfs 挂接的。
: ....................
- 来自「最水木 for iPhone12,8」
--
FROM 107.77.211.*
这几个核心都是file ops的poll吧。不是说普通磁盘上文件的实现总是会返回可写可读吗?
如果lz是说的bsd socket file,能很好地支持epoll,那就不会用open创建fd了吧
【 在 adoal 的大作中提到: 】
: select/poll/epoll到一堆fd上去,如果全都阻塞,那就阻塞,
: 如果有fd进入读或写不阻塞的状态,就会返回
:
: ....................
- 来自「最水木 for iPhone12,8」
--
FROM 107.77.211.*