我正在尝试了解进程如何获得自己的保存集uid。我能得到suid
的唯一方法是使用getresuid()
,但我想这不是最好的解决方案。
我如何才能以"更工程化的方式"获得它?
这是我的代码:
#define _GNU_SOURCE
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
int main(void) {
uid_t *ruid = malloc(sizeof (uid_t));
uid_t *euid = malloc(sizeof (uid_t));
uid_t *suid = malloc(sizeof (uid_t));
getresuid(ruid, euid, suid);
printf("%d, %d, %dn", *ruid, *euid, *suid);
}
实际上就是这样做的。您的方法过于复杂。看看这个:
uid_t ruid, euid, suid;
getresuid(&ruid, &euid, &suid);
printf("%d, %d, %dn", ruid, euid, suid);