On Thu, 2009-01-08 at 15:36 -0500, Casey Dahlin wrote:That could be done in a separate patch for waitid itself, and its a simple change to propagate it through waitfd (just one less EINVAL case). In terms of waitfd we'd be supersetting the interface, so its no big deal to add. In terms of waitid I'd have to check and make sure that we wouldn't be breaking compliance by allowing it to return something different on every call (this would likely affect cases where waitid(WNOWAIT) was used even in a normal fashion as well).
Roland McGrath wrote:This would definitely be a Nice To Have though!
Yes, but waitfd does not have this flag. The reason being waitfd justwaitid can be used that way with WNOWAIT.Since waitfd shouldn't consume the child termination notification
waitfd should be more widely usable than the wait*() interfaces.
calls waitid internally, and there is no guarantee (afaik) that
calling waitid with WNOWAIT multiple times in succession will yield
different results each time. This breaks the streaming behavior of the
descriptor.
Being able to use waitid() on another process of the same uid, with
WNOHANG, in a streaming fashion would be a *very* cool thing.
Scott