我想使用系统调用 setgid 来更改当前进程的组 ID。试图查找这个函数,我发现的唯一实现是在 kern_prot.c :
/*
* setgid
*
* Description: Set group ID system call
*
* Parameters: uap->gid gid to set
...
..
.
*/
int
setgid(proc_t p, struct setgid_args *uap, __unused int32_t *retval)
{
...
..
.
}
请注意,根据 /usr/unistd.h,API 完全不同(int setgid(gid_t);
)。
int setgid(gid_t);
是一个包装器int setgid(proc_t p, struct setgid_args *uap, __unused int32_t *retval)
- 我在哪里可以找到 的实施
int setgid(gid_t);
? - 是否有任何选项可以从 kern_prot.c 调用 setgid 的实现?
更新:
在监视我的程序dtruss
以观察系统调用之后,似乎调用setgid(gid_t)
触发了具有 3 个参数的系统调用,
这些参数setgid(0x2, 0x7F9AA3803200, 0x1000)
与 kern_prot.c 中的实现相匹配。问题是,我在哪里可以找到包装源代码,它属于哪个库(可能是 glibc?)
谢谢 ,