mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 13:54:21 +00:00
std: Wrap setpgid on POSIX
This commit is contained in:
parent
179a6e61e8
commit
d6fa71cd67
3 changed files with 23 additions and 0 deletions
|
|
@ -9167,6 +9167,7 @@ pub extern "c" fn setreuid(ruid: uid_t, euid: uid_t) c_int;
|
||||||
pub extern "c" fn setregid(rgid: gid_t, egid: gid_t) c_int;
|
pub extern "c" fn setregid(rgid: gid_t, egid: gid_t) c_int;
|
||||||
pub extern "c" fn setresuid(ruid: uid_t, euid: uid_t, suid: uid_t) c_int;
|
pub extern "c" fn setresuid(ruid: uid_t, euid: uid_t, suid: uid_t) c_int;
|
||||||
pub extern "c" fn setresgid(rgid: gid_t, egid: gid_t, sgid: gid_t) c_int;
|
pub extern "c" fn setresgid(rgid: gid_t, egid: gid_t, sgid: gid_t) c_int;
|
||||||
|
pub extern "c" fn setpgid(pid: pid_t, pgid: pid_t) c_int;
|
||||||
|
|
||||||
pub extern "c" fn malloc(usize) ?*anyopaque;
|
pub extern "c" fn malloc(usize) ?*anyopaque;
|
||||||
pub extern "c" fn realloc(?*anyopaque, usize) ?*anyopaque;
|
pub extern "c" fn realloc(?*anyopaque, usize) ?*anyopaque;
|
||||||
|
|
|
||||||
|
|
@ -1551,6 +1551,10 @@ pub fn setresgid(rgid: gid_t, egid: gid_t, sgid: gid_t) usize {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn setpgid(pid: pid_t, pgid: pid_t) usize {
|
||||||
|
return syscall2(.setpgid, @intCast(pid), @intCast(pgid));
|
||||||
|
}
|
||||||
|
|
||||||
pub fn getgroups(size: usize, list: *gid_t) usize {
|
pub fn getgroups(size: usize, list: *gid_t) usize {
|
||||||
if (@hasField(SYS, "getgroups32")) {
|
if (@hasField(SYS, "getgroups32")) {
|
||||||
return syscall2(.getgroups32, size, @intFromPtr(list));
|
return syscall2(.getgroups32, size, @intFromPtr(list));
|
||||||
|
|
|
||||||
|
|
@ -3415,6 +3415,24 @@ pub fn setregid(rgid: gid_t, egid: gid_t) SetIdError!void {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub const SetPgidError = error{
|
||||||
|
ProcessAlreadyExec,
|
||||||
|
InvalidProcessGroupId,
|
||||||
|
PermissionDenied,
|
||||||
|
ProcessNotFound,
|
||||||
|
} || UnexpectedError;
|
||||||
|
|
||||||
|
pub fn setpgid(pid: pid_t, pgid: pid_t) SetPgidError!void {
|
||||||
|
switch (errno(system.setpgid(pid, pgid))) {
|
||||||
|
.SUCCESS => return,
|
||||||
|
.ACCES => return error.ProcessAlreadyExec,
|
||||||
|
.INVAL => return error.InvalidProcessGroupId,
|
||||||
|
.PERM => return error.PermissionDenied,
|
||||||
|
.SRCH => return error.ProcessNotFound,
|
||||||
|
else => |err| return unexpectedErrno(err),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Test whether a file descriptor refers to a terminal.
|
/// Test whether a file descriptor refers to a terminal.
|
||||||
pub fn isatty(handle: fd_t) bool {
|
pub fn isatty(handle: fd_t) bool {
|
||||||
if (native_os == .windows) {
|
if (native_os == .windows) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue