Exit Status

Command-line programs should set their exit status to indicate success or failure.

In Zig, we can just return the exit status from main.

const std = @import("std");

pub fn main() u8 {
    return 123;
}
$ zig run exit.zig 
$ echo $?
123

We can also use std.process.exit to exit with a given exit status.

const std = @import("std");
const print = std.debug.print;

pub fn main() void {
    print("in main\n", .{});
    defer print("deferred\n", .{});
    std.process.exit(123);
}

It exits immediately, without running deferred statements.

$ zig build-exe exit-2.zig
$ ./exit-2; echo $?
in main
123

Next example: Async.