我试图获取uid
正在调用我的系统调用的进程运行程序。我使用linux/cred.h
它的宏称为current_uid()
.
问题是它返回一个我不知道的类型,kuid_t
。所以我无法将返回值保存到int
类型静态变量。以下是部分代码和错误:
static int getuid(void){
return current_uid();
}
static int caller_uid = getuid();
错误:
error: incompatible types when returning type ‘kuid_t’ {aka ‘const struct <anonymous>’} but ‘int’ was expected
current_cred()->xxx; \
答案1
kuid_t
定义为linux/uidgid.h
它只是一个具有一个成员的简单结构uid_t
。
typedef struct {
uid_t val;
} kuid_t;
您应该能够uid_t
使用current_uid().val
and uid_t
is just an来获取值usigned int
。