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
単にuid_t
価値を得ることですusigned int
。