On Thu, Sep 03, 2020 at 04:22:42PM +0200, Oleg Nesterov wrote: > On 09/02, Christian Brauner wrote: > > > > It also makes the API more consistent and uniform. In essence, waitid() is > > treated like a read on a non-blocking pidfd or a recvmsg() on a non-blocking > > socket. > > With the addition of support for non-blocking pidfds we support the same > > functionality that sockets do. For sockets() recvmsg() supports MSG_DONTWAIT > > for pidfds waitid() supports WNOHANG. > > What I personally do not like is that waitid(WNOHANG) returns zero or EAGAIN > depending on f_flags & O_NONBLOCK... This doesn't match recvmsg(MSG_DONTWAIT) > and doesn't look consistent to me. It's not my favorite thing either but async event loops are usually modeled around EAGAIN so I think this has benefits. Josh can speak more to that. Christian