gpt4 book ai didi

c - linux内核如何获取当前进程的一些信息

转载 作者:太空宇宙 更新时间:2023-11-03 23:24:57 28 4
gpt4 key购买 nike

我是内核编码的新手。所以请原谅我问了一个非常垃圾的问题

我正在尝试获取内核 linux 中当前正在运行的进程的所有信息。这是我尝试过的:

#include <linux/kernel.h>
#include <linux/uaccess.h>
#include <linux/module.h>
#include <linux/sched.h>
#include "process_ancestors.h"

asmlinkage long sys_prs_anc(int arg){
//int counter = 0;
long pid;
char *process_name;
long process_state;
long process_owner_uid;
long voluntary_context_switches;
long involuntary_context_switches;
long num_children;
long num_siblings;
struct list_head *pos;

num_children = 0;
num_siblings = 0;
struct list_head children_list;
struct list_head siblings_list;
pid = current->pid;
process_name = current->comm;
process_state=current->state;
process_owner_uid = (current->cred)->uid;
children_list = current->children;
siblings_list = current->sibling;
voluntary_context_switches = current->nivcsw;
involuntary_context_switches = current->nvcsw;

list_for_each(pos, &children_list){
num_children ++;
}
list_for_each(pos, &siblings_list){
num_siblings ++;
}

return 0;
}

构建时出现以下错误?

  CHK     include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
CALL scripts/checksyscalls.sh
CHK include/generated/compile.h
CC cs300/process_ancestors.o
cs300/process_ancestors.c: In function ‘sys_process_ancestors’:
cs300/process_ancestors.c:21:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
struct list_head children_list;
^
cs300/process_ancestors.c:26:6: error: incompatible types when assigning to type ‘long int’ from type ‘kuid_t’
uid = (current->cred)->uid;
^
make[1]: *** [cs300/process_ancestors.o] Error 1
make: *** [cs300] Error 2

谁能给我一些提示,我做错了什么?

最佳答案

uid 是 kuid_t 类型

typedef struct {
uid_t val;
} kuid_t;

你应该使用 process_owner_uid = (current->cred)->uid.val;

关于c - linux内核如何获取当前进程的一些信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29565235/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com