gpt4 book ai didi

linux - 如何从 proc 文件中读取大数据?

转载 作者:IT王子 更新时间:2023-10-29 00:51:59 24 4
gpt4 key购买 nike

我正在尝试编写一个内核模块,将一些数据写入 proc 文件。我正在尝试写类似 5000 个字符的内容,但是当我说 $>cat/proc/myentry 时,我只能读取 1000 个字符。

int procfile_read(char *buffer,  char **buffer_location,  off_t offset, int buffer_length, int *eof, void *data){
int ret;
static char my_buffer[4096];

if (offset > 0) {

ret = 0;
} else {

ret = sprintf(my_buffer, LARGE STRING HERE);
}

*buffer_location=my_buffer;
return ret;
}

这是我的代码。提前致谢。

最佳答案

我确实遇到了这个问题。

原始帖子中的一个问题,if (offset>0) 在小型 proc 文件的示例中多次使用。多次调用读取,直到我们返回 0 以指示没有更多数据。所以 if (offset>0) 意味着我们返回(缓冲区的长度)为 0。

这个函数有3种返回数据的方式。看源码注释,line 75 onwards :

对于大文件(评论中的方法 2),我做了以下操作:-

  • 对于每个大数据 block ,将数据的“buffer_length”复制到“buffer”。
  • 将“*start”(或您的情况下的 *buffer_location)设置为“buffer”。
  • 返回您写入的数据量(通常为“buffer_length”)

最后,所有的数据都会被写入,你返回0。

这对我有几兆数据的作用。

关于linux - 如何从 proc 文件中读取大数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8648672/

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