Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › std/ › Io/ › Dispatch.zig › childWait
childWait
Dispatch.childWait
fn childWait (userdata : ?*anyopaque , child : *process .Child ) process .Child .WaitError !process .Child .Term
File
Code
fn childWait (userdata : ?*anyopaque , child : *process .Child ) process .Child .WaitError !process .Child .Term {
const ev : *Evented = @ptrCast (@alignCast (userdata ));
defer ev .childCleanup (child );
const pid = child .id .?;
const source = c .dispatch .source_create (
.PROC ,
@bitCast (@as (isize , pid )),
.{ .PROC = .{ .EXIT = true } },
ev .queue ,
) orelse return error .Unexpected ;
source .as_object ().set_context (Thread .current ().currentFiber ());
source .set_event_handler (&Fiber .@"resume" );
ev .yield (.{ .activate = source .as_object () });
source .as_object ().release ();
var status : c_int = undefined ;
var ru : c .rusage = undefined ;
const ru_ptr = if (child .request_resource_usage_statistics ) &ru else null ;
while (true ) switch (c .errno (c .wait4 (pid , &status , 0 , ru_ptr ))) {
.SUCCESS => {
if (ru_ptr ) |p | child .resource_usage_statistics .rusage = p .*;
return statusToTerm (@bitCast (status ));
},
.INTR => {},
.CHILD => |err | return errnoBug (err ),
else => |err | return unexpectedErrno (err ),
};
}