模块 Process::Sys
Process::Sys 模块包含 UID 和 GID 函数,这些函数提供了与同名系统调用的直接绑定,而不是在 Process、Process::UID 和 Process::GID 模块中找到的相同功能的更便携的版本。
公共类方法
源代码
static VALUE
proc_getegid(VALUE obj)
{
rb_gid_t egid = getegid();
return GIDT2NUM(egid);
}
返回当前进程的有效组 ID
Process.egid # => 500
并非在所有平台上都可用。
源代码
static VALUE
proc_geteuid(VALUE obj)
{
rb_uid_t euid = geteuid();
return UIDT2NUM(euid);
}
返回当前进程的有效用户 ID。
Process.euid # => 501
源代码
static VALUE
proc_getgid(VALUE obj)
{
rb_gid_t gid = getgid();
return GIDT2NUM(gid);
}
返回当前进程的(真实)组 ID
Process.gid # => 1000
源代码
static VALUE
proc_getuid(VALUE obj)
{
rb_uid_t uid = getuid();
return UIDT2NUM(uid);
}
返回当前进程的(真实)用户 ID。
Process.uid # => 1000
源代码
static VALUE
p_sys_issetugid(VALUE obj)
{
return RBOOL(issetugid());
}
如果进程是由于 execve(2) 系统调用而创建的,并且设置了 setuid 或 setgid 位(并因此获得了额外的特权),或者自开始执行以来更改了其实际、有效或保存的用户或组 ID,则返回 true。
源代码
static VALUE
p_sys_setegid(VALUE obj, VALUE id)
{
check_gid_switch();
if (setegid(OBJ2GID(id)) != 0) rb_sys_fail(0);
return Qnil;
}
将调用进程的有效组 ID Set 设置为 group。并非在所有平台上都可用。
源代码
static VALUE
p_sys_seteuid(VALUE obj, VALUE id)
{
check_uid_switch();
if (seteuid(OBJ2UID(id)) != 0) rb_sys_fail(0);
return Qnil;
}
将调用进程的有效用户 ID Set 设置为 user。并非在所有平台上都可用。
源代码
static VALUE
p_sys_setgid(VALUE obj, VALUE id)
{
check_gid_switch();
if (setgid(OBJ2GID(id)) != 0) rb_sys_fail(0);
return Qnil;
}
将当前进程的组 ID Set 设置为 group。并非在所有平台上都可用。
源代码
static VALUE
p_sys_setregid(VALUE obj, VALUE rid, VALUE eid)
{
rb_gid_t rgid, egid;
check_gid_switch();
rgid = OBJ2GID(rid);
egid = OBJ2GID(eid);
if (setregid(rgid, egid) != 0) rb_sys_fail(0);
return Qnil;
}
将当前进程的(组)实际和/或有效组 ID 分别设置为 rid 和 eid。任何一个值 -1 都意味着保持该 ID 不变。并非在所有平台上都可用。
源代码
static VALUE
p_sys_setresgid(VALUE obj, VALUE rid, VALUE eid, VALUE sid)
{
rb_gid_t rgid, egid, sgid;
check_gid_switch();
rgid = OBJ2GID(rid);
egid = OBJ2GID(eid);
sgid = OBJ2GID(sid);
if (setresgid(rgid, egid, sgid) != 0) rb_sys_fail(0);
return Qnil;
}
将当前进程的(组)实际、有效和保存的用户 ID 分别设置为 rid、eid 和 sid。任何一个值 -1 都意味着保持该 ID 不变。并非在所有平台上都可用。
源代码
static VALUE
p_sys_setresuid(VALUE obj, VALUE rid, VALUE eid, VALUE sid)
{
rb_uid_t ruid, euid, suid;
PREPARE_GETPWNAM;
check_uid_switch();
ruid = OBJ2UID1(rid);
euid = OBJ2UID1(eid);
suid = OBJ2UID1(sid);
FINISH_GETPWNAM;
if (setresuid(ruid, euid, suid) != 0) rb_sys_fail(0);
return Qnil;
}
将当前进程的(用户)实际、有效和保存的用户 ID 分别设置为 rid、eid 和 sid。任何一个值 -1 都意味着保持该 ID 不变。并非在所有平台上都可用。
源代码
static VALUE
p_sys_setreuid(VALUE obj, VALUE rid, VALUE eid)
{
rb_uid_t ruid, euid;
PREPARE_GETPWNAM;
check_uid_switch();
ruid = OBJ2UID1(rid);
euid = OBJ2UID1(eid);
FINISH_GETPWNAM;
if (setreuid(ruid, euid) != 0) rb_sys_fail(0);
return Qnil;
}
将当前进程的(用户)实际和/或有效用户 ID 分别设置为 rid 和 eid。任何一个值 -1 都意味着保持该 ID 不变。并非在所有平台上都可用。
源代码
static VALUE
p_sys_setrgid(VALUE obj, VALUE id)
{
check_gid_switch();
if (setrgid(OBJ2GID(id)) != 0) rb_sys_fail(0);
return Qnil;
}
将调用进程的真实组 ID Set 设置为 group。并非在所有平台上都可用。
源代码
static VALUE
p_sys_setruid(VALUE obj, VALUE id)
{
check_uid_switch();
if (setruid(OBJ2UID(id)) != 0) rb_sys_fail(0);
return Qnil;
}
将调用进程的真实用户 ID Set 设置为 user。并非在所有平台上都可用。
源代码
static VALUE
p_sys_setuid(VALUE obj, VALUE id)
{
check_uid_switch();
if (setuid(OBJ2UID(id)) != 0) rb_sys_fail(0);
return Qnil;
}
将当前进程的用户 ID Set 设置为 user。并非在所有平台上都可用。