As far as I can tell, O_NONBLOCK has no effect on a pidfd. When calling waitid on a pidfd for a running process, it always blocks unless you provide WNOHANG. I don't think anything depends on that behavior. Would it be possible to make O_NONBLOCK on a pidfd cause waitid on a running process to return EWOULDBLOCK? This would make it easier to use pidfd in some non-blocking event loops. - Josh Triplett