Em seg 21 abr 2014, às 16:50:50, Denis Shienkov escreveu: > Hmmm.. > > Thiago, what do you mean by "writeable"? It is when device was opened in > the WriteOnly (ReadWrite) mode, or something else?
When the underlying device can receive more bytes from the userspace. Sockets and pipes are buffered in the kernel. When you write to them, they don't get sent immediately (for sockets, specifically, there's Nagle's algorithm in place). They get buffered and sent later. That buffer is not unlimited in size. When you write too much, the OS will not accept more write() calls. That is, write() will return -EWOULDBLOCK. When that happens, you need the QSocketNotifier for Write to tell you when it's acceptable to write again. QAbstractSocket and QProcess always put the data in their own buffer during writeData(). Then they enable the QSocketNotifier for Write, if it wasn't enabled. When that notifier fires, in the event loop, the actual writing to the OS happens. > If I correctly understand, then I assume that the device always is > "writeable": i.e. opened in WriteOnly (ReadWrite) and the internal buffer > of writing is not empty. You assume wrong. Therefore, the rest of the email does not make sense. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
