O_NONBLOCK和O_NDELAY所产生的结果都是使I/O变成非搁置模式(non-blocking),在读取不到数据或是写入缓冲区已满会马上return,而不会搁置程序动作,直到有数据或写入完成。 它们的差别在于设立O_NDELAY会使I/O函式马上回传0,但是又衍生出一个问题,因为读取到档案结尾时所回传的也是0,这样无法得知是哪中情况;因此,...
O_NONBLOCK和O_NDELAY所产生的结果都是使I/O变成非搁置模式(non-blocking),在读取不到数据或是写入缓冲区已满会马上return,而不会搁置程序动作,直到有数据或写入完成。 它们的差别在于设立O_NDELAY会使I/O函式马上回传0,但是又衍生出一个问题,因为读取到档案结尾时所回传的也是0,这样无法得知是哪中情况;因此,...
例如,它是常见的 FIONBIO 在套接字上工作 O_NDELAY 在TTY上工作,对管道,FIFO和设备等事情有很多不一致。如果您不知道您拥有的是什么样的文件描述符,则必须设置既可以确定。但另外,没有可用数据的非阻塞读数也是不一致的;根据操作系统和文件描述符的类型,读取可能会返回0,或-1与errno eagain,或-1使用errno ...
but these behaved inconsistently between systems, and even within the same system. For example, it was common forFIONBIOto work on sockets andO_NDELAYto work on ttys, with a lot of inconsistency for things like pipes, fifos, and devices. And if you didn't know what kind of file descript...
O_NDELAY 来处理ttys,管道,fifos和设备之类的东西很多不一致。如果你不知道你有什么样的文件描述符,你必须设置两者以确定。但此外,没有数据的非阻塞读取也表明不一致;根据操作系统和文件描述符的类型,读取可能返回0,或者使用errno EAGAIN返回-1,或者使用errno EWOULDBLOCK返回-1。即使在今天,在Solaris上设置 ...
O_NONBLOCK和O_NDELAY所产生的结果都是使I/O变成非搁置模式(non-blocking),在读取不到数据或是写入缓冲区已满会马上return,而不会搁置程序动作,直到有数据或写入完成。 它们的差别在于设立O_NDELAY会使I/O函式马上回传0,但是又衍生出一个问题,因为读取到档案结尾时所回传的也是0,这样无法得知是哪中情况;因此...
O_NONBLOCK和O_NDELAY所产生的结果都是使I/O变成非搁置模式(non-blocking),在读取不到数据或是写入缓冲区已满会马上return,而不会搁置程序动作,直到有数据或写入完成。它们的差别在于设立O_NDELAY会使I/O函式马上回传0,但是又衍生出一个问题,因为读取到档案结尾