Linux kernel 如何在用户空间中显示通过读调用从内核复制的结构指针数组

Linux kernel 如何在用户空间中显示通过读调用从内核复制的结构指针数组,linux-kernel,Linux Kernel,根据当前运行的进程数,通过使用for_每个_进程宏调用和一个简单计数器,我使用kmalloc为这些进程分配内存,以在结构中存储进程pid及其父pid。并使用copy_to_user将其复制到用户空间段,如下所示 复制到用户(缓冲区和数据、大小(数据)*进程计数器) 但问题是,我不知道应该如何使用read系统调用在用户空间应用程序上显示它。 在一次读取调用中是否可能,或者是否需要使用while循环 提前感谢。一次读取调用是否可能,或者是否需要使用while循环?-使用读取调用时,用户代码应指定要读

根据当前运行的进程数,通过使用for_每个_进程宏调用和一个简单计数器,我使用kmalloc为这些进程分配内存,以在结构中存储进程pid及其父pid。并使用copy_to_user将其复制到用户空间段,如下所示

复制到用户(缓冲区和数据、大小(数据)*进程计数器)

但问题是,我不知道应该如何使用read系统调用在用户空间应用程序上显示它。 在一次读取调用中是否可能,或者是否需要使用while循环


提前感谢。

一次读取调用是否可能,或者是否需要使用while循环?
-使用
读取
调用时,用户代码应指定要读取的最大字节数。如果代码能够分配足够大的缓冲区来包含所有进程的信息,那么单次
read
调用就足够了。否则,应重复
read
调用,直到EOF.int字节;而(bytes!=EOF){bytes=read(user\u buffer,&struct\u Variable,anymaxlength);display data}是您的建议吗?如果
struct\u Variable
分配了
n
数据结构数组,那么您可以使用
sizeof(data)*n
作为
anymaxlength
。读取后填充的结构的实际数量应该由
字节
值决定。谢谢!