Hi, I run into somewhat strange problem with sigprocmask()
.
Here is source code:
// spm.zig
const std = @import("std");
const os = std.os;
const sigProcMask = os.sigprocmask;
const SigSet = os.sigset_t;
const SIG = os.SIG;
pub fn main() void {
var sset: SigSet = os.empty_sigset;
os.linux.sigaddset(&sset, SIG.TERM);
sigProcMask(SIG.BLOCK, &sset, null);
}
It compiles successfully with zig build-exe spm.zig
.
But when linking with libc
, I get this error:
$ /opt/zig/zig build-exe spm.zig -lc
/opt/zig/lib/std/os.zig:5503:38: error: expected type 'c_int', found 'u32'
switch (errno(system.sigprocmask(flags, set, oldset))) {
^~~~~
/opt/zig/lib/std/os.zig:5503:38: note: signed 32-bit int cannot represent all possible unsigned 32-bit values
referenced by:
sigProcMask: spm.zig:4:23
main: spm.zig:11:5
How can I fix this?
Casting SIG.BLOCK
to c_int
does not help.