commit d2e4ad613bc73527a29ea4813024c540d8f6c793 (tree)
parent 0df89cd0e1896cced2289915acc906476bc980d1
Author: Andrew Kelley <andrew@ziglang.org>
Date: Wed, 17 Sep 2025 21:14:08 -0700
Merge pull request #25217 from blblack/setsiderr
std.os.linux.setsid(): return raw syscall0 result
Diffstat:
2 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig
@@ -1834,20 +1834,23 @@ pub fn setgroups(size: usize, list: [*]const gid_t) usize {
}
}
-pub fn setsid() pid_t {
- return @bitCast(@as(u32, @truncate(syscall0(.setsid))));
+pub fn setsid() usize {
+ return syscall0(.setsid);
}
pub fn getpid() pid_t {
- return @bitCast(@as(u32, @truncate(syscall0(.getpid))));
+ // Casts result to a pid_t, safety-checking >= 0, because getpid() cannot fail
+ return @intCast(@as(u32, @truncate(syscall0(.getpid))));
}
pub fn getppid() pid_t {
- return @bitCast(@as(u32, @truncate(syscall0(.getppid))));
+ // Casts result to a pid_t, safety-checking >= 0, because getppid() cannot fail
+ return @intCast(@as(u32, @truncate(syscall0(.getppid))));
}
pub fn gettid() pid_t {
- return @bitCast(@as(u32, @truncate(syscall0(.gettid))));
+ // Casts result to a pid_t, safety-checking >= 0, because gettid() cannot fail
+ return @intCast(@as(u32, @truncate(syscall0(.gettid))));
}
pub fn sigprocmask(flags: u32, noalias set: ?*const sigset_t, noalias oldset: ?*sigset_t) usize {
diff --git a/lib/std/posix.zig b/lib/std/posix.zig
@@ -7000,7 +7000,7 @@ pub const SetSidError = error{
pub fn setsid() SetSidError!pid_t {
const rc = system.setsid();
switch (errno(rc)) {
- .SUCCESS => return rc,
+ .SUCCESS => return @intCast(rc),
.PERM => return error.PermissionDenied,
else => |err| return unexpectedErrno(err),
}