Kernel
使用 cred.h 在系統呼叫 LKM 中獲取系統呼叫者的 uid 時出現問題
我試圖獲取
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; \
kuid_t
定義為linux/uidgid.h
它只是一個具有一個uid_t
成員的簡單結構。typedef struct { uid_t val; } kuid_t;
您應該能夠
uid_t
使用current_uid().val
anduid_t
is just an獲取值usigned int
。