`SignalFd::set_mask` closes the signal file descriptor
DJMcNab opened this issue · comments
Lines 103 to 105 in b2e45a9
This is because _signalfd
returns an OwnedFd
as of #1874 (cc @JonathanWoollett-Light ):
Line 52 in b2e45a9
This has caused issues in Smithay/calloop, and required backing out of the nix 0.27 update (+ #2112, of course).
This can be worked around in user code by using the newly-deprecated signalfd
function, so it's not too bad:
- file.set_mask(&mask)?;
+ // The nix crate is currently broken. We would like to use:
+ // file.set_mask(&mask)?;
+ // but this closes the file descriptor
+ #[allow(deprecated)]
+ signalfd::signalfd(Some(file.as_fd()), &mask, SfdFlags::empty())
+ .map(std::mem::forget)?;