No, it's the specified behavior of a Unix pipe or socket[1].  If you want it not to block, you should set the O_NONBLOCK flag using fcntl().  Being "write ready" just means that it can take at least one byte in a buffer; it can't possibly be a promise not to block if you feed it a 2G buffer.<p>[1] But <i>not</i> disk files.  Local disk storage isn't considered  "blocking" if it simply needs to do a disk seek before returning the data.  Most unix geeks end up finding this out experimentally at some point in their careers and using strong language.  No, I don't know what they were thinking either...