"man 2 splice" at Linux man-pages 2012-05-04 says: "A return value of 0 means that there was no data to transfer, and it would not make sense to block, because there are no writers connected to the write end of the pipe referred to by fd_in." This is very hard-to-understand sentence, so, please rewrite it somehow. First of all, this is not clear from this sentence that it speaks about reading from pipe and not about writing. (At first I wrongly decided from this sentence that it speaks about writing to broken pipe without readers [despite of word "writers"]). So, at least, please write so: "If we read from pipe, then a return value of 0 means that there was no data to transfer, and it would not make sense to block, because there are no writers connected to the write end of the pipe referred to by fd_in." Then, the actual truth is the following: splice returns 0 if and only if corresponding read would return 0, i. e. on EOF on input (and reading from pipe without writers is just a special case of EOF). And the sentence doesn't say anything about reading from files other that pipes. So, please, rewrite so: "A return value of 0 means end of input. If input is pipe then this means that there was no data to transfer, and it would not make sense to block, because there are no writers connected to the write end of the pipe referred to by fd_in."
(In reply to Askar Safin from comment #0) > Then, the actual truth is the following: splice returns 0 if and only if > corresponding read would return 0, i. e. on EOF on input (and reading from > pipe without writers is just a special case of EOF). And the sentence > doesn't say anything about reading from files other that pipes. So, please, > rewrite so: > "A return value of 0 means end of input. If input is pipe then this means > that there was no data to transfer, and it would not make sense to block, > because there are no writers connected to the write end of the pipe referred > to by fd_in." So I used that text, pretty much as you gave it. Thanks! Cheers, Michael
Thanks :)