Bug 90911 - About splice returning 0
Summary: About splice returning 0
Status: RESOLVED CODE_FIX
Alias: None
Product: Documentation
Classification: Unclassified
Component: man-pages (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: documentation_man-pages@kernel-bugs.osdl.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-01-07 20:17 UTC by Askar Safin
Modified: 2016-03-11 08:54 UTC (History)
1 user (show)

See Also:
Kernel Version:
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Askar Safin 2015-01-07 20:17:42 UTC
"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."
Comment 1 Michael Kerrisk 2016-03-10 18:57:50 UTC
(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
Comment 2 Askar Safin 2016-03-11 08:54:59 UTC
Thanks :)

Note You need to log in before you can comment on or make changes to this bug.