module Process::Sys
The Process::Sys 模块包含 UID 和 GID 函数,它们提供与同名系统调用直接绑定的接口,而不是在 Process、Process::UID 和 Process::GID 模块中找到的功能的更具可移植性的版本。
Public Class Methods
Source
static VALUE
proc_getegid(VALUE obj)
{
rb_gid_t egid = getegid();
return GIDT2NUM(egid);
}
返回当前进程的有效组 ID。
Process.egid # => 500
Not available on all platforms.
Source
static VALUE
proc_geteuid(VALUE obj)
{
rb_uid_t euid = geteuid();
return UIDT2NUM(euid);
}
返回当前进程的有效用户 ID。
Process.euid # => 501
Source
static VALUE
proc_getgid(VALUE obj)
{
rb_gid_t gid = getgid();
return GIDT2NUM(gid);
}
返回当前进程的(实际)组 ID。
Process.gid # => 1000
Source
static VALUE
proc_getuid(VALUE obj)
{
rb_uid_t uid = getuid();
return UIDT2NUM(uid);
}
返回当前进程的(实际)用户 ID。
Process.uid # => 1000
Source
static VALUE
p_sys_issetugid(VALUE obj)
{
return RBOOL(issetugid());
}
如果进程是由于设置了 setuid 或 setgid 位(并因此获得了额外的权限)的 execve(2) 系统调用而创建的,或者自执行开始以来更改了任何实际、有效或保存的用户或组 ID,则返回 true。
Source
static VALUE
p_sys_setegid(VALUE obj, VALUE id)
{
check_gid_switch();
if (setegid(OBJ2GID(id)) != 0) rb_sys_fail(0);
return Qnil;
}
将调用进程的有效组 ID 设置为 group。并非在所有平台上都可用。
Source
static VALUE
p_sys_seteuid(VALUE obj, VALUE id)
{
check_uid_switch();
if (seteuid(OBJ2UID(id)) != 0) rb_sys_fail(0);
return Qnil;
}
将调用进程的有效用户 ID 设置为 user。并非在所有平台上都可用。
Source
static VALUE
p_sys_setgid(VALUE obj, VALUE id)
{
check_gid_switch();
if (setgid(OBJ2GID(id)) != 0) rb_sys_fail(0);
return Qnil;
}
将当前进程的组 ID 设置为 group。并非在所有平台上都可用。
Source
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。并非在所有平台上都可用。
Source
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。并非在所有平台上都可用。
Source
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。并非在所有平台上都可用。
Source
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。并非在所有平台上都可用。
Source
static VALUE
p_sys_setrgid(VALUE obj, VALUE id)
{
check_gid_switch();
if (setrgid(OBJ2GID(id)) != 0) rb_sys_fail(0);
return Qnil;
}
将调用进程的实际组 ID 设置为 group。并非在所有平台上都可用。
Source
static VALUE
p_sys_setruid(VALUE obj, VALUE id)
{
check_uid_switch();
if (setruid(OBJ2UID(id)) != 0) rb_sys_fail(0);
return Qnil;
}
将调用进程的实际用户 ID 设置为 user。并非在所有平台上都可用。
Source
static VALUE
p_sys_setuid(VALUE obj, VALUE id)
{
check_uid_switch();
if (setuid(OBJ2UID(id)) != 0) rb_sys_fail(0);
return Qnil;
}
将当前进程的用户 ID 设置为 user。并非在所有平台上都可用。