A valid file descriptor will be non-negative, i.e., 0 <= fd <= INT_MAX. When all of the bits of a valid file descriptor are flipped, the result is a negative value: ~0 = -1, ~1 = -2, ..., ~INT_MAX = INT_MIN. If all of these bits are flipped again, then the file descriptor is recovered. Negating the file descriptor does not quite achieve this, because there will be no change for fd 0. (Likewise, negating INT_MIN would not cause any change in value, but it is never a valid file descriptor.) Link: https://bugzilla.kernel.org/show_bug.cgi?id=79411 Signed-off-by: David Ward <david.ward@xxxxxxxxxx> --- man2/poll.2 | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/man2/poll.2 b/man2/poll.2 index 205468f3e..cd65bc6e8 100644 --- a/man2/poll.2 +++ b/man2/poll.2 @@ -83,10 +83,9 @@ field returns zero. (This provides an easy way of ignoring a file descriptor for a single .BR poll () -call: simply negate the +call: simply set the .I fd -field. -Note, however, that this technique can't be used to ignore file descriptor 0.) +field to its bitwise complement.) .PP The field .I events