读取没有EOF标志的文件

2024-09-29 01:22:03 发布

您现在位置:Python中文网/ 问答频道 /正文

如果这个文件有点像缓冲区(buffer),有没有什么聪明的方法可以逐行(用python)读取文件的内容?在

更具体地说,我将简单防火墙实现为内核模块,它通过procfs与用户空间应用程序通信。当用户空间应用程序请求打印所有防火墙规则时,将调用procf懆u read函数,并将所有规则存储在缓冲区中,然后将缓冲区复制到用户(copy_to_userfunc)。如果我使用simple for loop逐行读取文件,它会循环遍历文件并打印出很好的行(假设有3行),但随后它会循环打印相同的行,直到整个缓冲区都被读取(我的猜测)。我想只打印这3行理想地不插入额外的符号到文件的末尾来模拟“EOF”,然后在用户空间(python)中检测它。我在考虑按字节读取文件,但如何以C的fread()方式获取要读取的字节数?在


Tags: 文件方法函数用户应用程序内容read规则
1条回答
网友
1楼 · 发布于 2024-09-29 01:22:03

文件从不包含EOF,它不是一个字符,因此无法执行您想要的操作,因为它没有意义。在

当您从文件中读取时,库在试图读取超过文件结尾时,会用EOF标记文件句柄,然后调用feof(file)将返回非零值。但是没有从文件中读取的字符是EOF字符,如果有,那么如何将这个特定的值存储在文件中?在

有关详细信息,请参见this。在

您可以构建以下解决方案

size_t fileSize;

fseek(file, 0L, SEEK_END);
fileSize = ftell(file);
fseek(file, 0L, SEEK_SET);

现在您知道要传递给fread()的内容了。在

相关问题 更多 >