Linux 遍历时 使用for_each_process 系统认为错误 怎么办啊 头文件也加了

在Ubuntu上遍历进程时 用的函数是 for_each_process(task) 结果给我报错 代码与错误结果如下 不知道应该怎么改 ![图片说明](https://img-ask.csdn.net/upload/201803/31/1522481357_253891.png)图片说明

你的task指针都是空的,你让他从哪里开始遍历啊

首先结构体指针task定义时没有初始化为NULL,其次指针没有具体指向,直接引用野指针

从楼主贴的代码上看不出来获取了task指针后做了什么操作,猜测错误可能更楼主没贴上来的代码有关,但具体还得把编译时报错的信息贴上来才能知道。
附上一个示例代码和Makefile文件供参考:
文件名:test.c
#include
#include
#include

static int __init functn_init(void)
{
int ret=0;
struct task_struct *task;

printk(KERN_INFO "insmod test modules.\n");

for_each_process(task)
    printk(KERN_INFO "pid:%d,task_name:%s\n",task->pid,task->comm);
return ret;

}

static void __exit functn_cleanup(void)
{
printk(KERN_INFO "exit test modules!\n");
}

module_init(functn_init);
module_exit(functn_cleanup);

MODULE_LICENSE("GPL");

Makefile文件内容:
ifneq ($(KERNELRELEASE),)
obj-m := test.o
else
PWD := $(shell pwd)
KDIR :=/home/kernel/kernel-3.10.0-693/
all:
$(MAKE) -C $(KDIR) M=$(PWD)
clean:
rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions *.symvers *.order
endif

从贴的代码上看,没看出啥问题。可以把具体的报错信息贴出来看下吧。

我之前学习的时候做过一个类似的。你可参考一下子

https://github.com/gatieme/LDD-LinuxDeviceDrivers/blob/master/study/kernel/01-process/00-code/list_process

源码
Makefile

list_process.c

第四行改成
#include