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/ › Threaded.zig › childWaitWindows
childWaitWindows
Threaded.childWaitWindows
fn childWaitWindows (child : *process .Child ) process .Child .WaitError !process .Child .Term
File
Code
fn childWaitWindows (child : *process .Child ) process .Child .WaitError !process .Child .Term {
const handle = child .id .?;
const alertable_syscall : AlertableSyscall = try .start ();
const infinite_timeout : windows .LARGE_INTEGER = std .math .minInt (windows .LARGE_INTEGER );
while (true ) switch (windows .ntdll .NtWaitForSingleObject (handle , .TRUE , &infinite_timeout )) {
windows .NTSTATUS .WAIT_0 => break alertable_syscall .finish (),
.USER_APC , .ALERTED , .TIMEOUT => {
try alertable_syscall .checkCancel ();
continue ;
},
else => |status | return alertable_syscall .unexpectedNtstatus (status ),
};
var info : windows .PROCESS .BASIC_INFORMATION = undefined ;
const term : process .Child .Term = switch (windows .ntdll .NtQueryInformationProcess (
handle ,
.BasicInformation ,
&info ,
@sizeOf (windows .PROCESS .BASIC_INFORMATION ),
null ,
)) {
.SUCCESS => .{ .exited = @as (u8 , @truncate (@backingInt (info .ExitStatus ))) },
else => .{ .unknown = 0 },
};
childCleanupWindows (child );
return term ;
}